服务端返回的 headers, PC 端和移动端打印的结果不一样是啥问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jowan
V2EX    PHP

服务端返回的 headers, PC 端和移动端打印的结果不一样是啥问题

  •  
  •   jowan 2018-08-01 21:08:14 +08:00 3250 次点击
    这是一个创建于 2633 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端使用 axios 跨域请求 api
    服务端返回结果的时候 header 配置了跨域参数
    并返回了一些自定义 headers 如 Authorization、Client-Id 等
    电脑端调试时 可以打印这些 response 的 headers 参数
    唯独手机端的 safari、chrome 均无法获取
    打印只有 content-type、cache-control
    但两者的 respose.data 的数据都是正常的

    PC 端 response.headers

    此处输入图片的描述

    手机端的 response.headers

    此处输入图片的描述

    请教下这是什么原因

    第 1 条附言    2018-08-01 21:43:01 +08:00

    谢谢各位 找到原因了 但是很诡异 PC端不用设置是可以拿到全部headers的

    原因:

    Access-Control-Expose-Headers:该字段可选。CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定。上面的例子指定,getResponseHeader('FooBar')可以返回FooBar字段的值。

    https://www.jianshu.com/p/b0c5865dbda9

    10 条回复    2018-08-02 13:45:30 +08:00
    misaka19000
        1
    misaka19000  
       2018-08-01 21:13:24 +08:00
    亮代码
    jowan
        2
    jowan  
    OP
       2018-08-01 21:21:17 +08:00
    misaka19000
        3
    misaka19000  
       2018-08-01 21:26:20 +08:00
    是不是 JS 里面有限制有些 header 不允许拿到?
    jowan
        4
    jowan  
    OP
       2018-08-01 21:29:55 +08:00
    @misaka19000 关键是手机端和 PC 端的前端代码是一样的 。。
    swcat
        5
    swcat  
       2018-08-01 21:37:33 +08:00 via iPhone
    给个调试思路,用 charles 抓包,看抓到的包,判断问题出在哪里,我用跨域也用了蛮久了,貌似没有出现你说的问题,(可能配置不完全一样)可以贴出抓的手机端的包看看

    或者先从简单跨域,一步一步到你的跨域配置,看哪里出问题
    tradzero
        6
    tradzero  
       2018-08-01 21:37:46 +08:00
    是不是 nginx 的跨域 没写 always
    also24
        7
    also24  
       2018-08-01 21:50:22 +08:00   1
    刚想说想起了这篇文章:
    https://juejin.im/entry/5b31bbb251882574c82d9ae9
    jowan
        8
    jowan  
    OP
       2018-08-01 21:57:47 +08:00
    @also24 其实我设置了 Access-Control-Expose-Headers:*,只不过*在 PC 端有用,在移动端要指定参数
    also24
        9
    also24  
       2018-08-01 21:59:20 +08:00
    @jowan #8
    可能是不同的浏览器的具体实现不同,不过结合那篇文章里引发战争的情况来看,我感觉以后搞东西,header 还是轻一点比较好
    YMB
        10
    YMB  
       2018-08-02 13:45:30 +08:00
    没错,是要这样指定,但我印象中如果不指定手机和 pc 都收不到。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     893 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:09 PVG 04:09 LAX 13:09 JFK 16:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86