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

2018-08-01 21:08:14 +08:00
 jowan

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

PC 端 response.headers

手机端的 response.headers

请教下这是什么原因

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

或者先从简单跨域,一步一步到你的跨域配置,看哪里出问题
tradzero
2018-08-01 21:37:46 +08:00
是不是 nginx 的跨域 没写 always
also24
2018-08-01 21:50:22 +08:00
刚想说想起了这篇文章:
https://juejin.im/entry/5b31bbb251882574c82d9ae9
jowan
2018-08-01 21:57:47 +08:00
@also24 其实我设置了 Access-Control-Expose-Headers:*,只不过*在 PC 端有用,在移动端要指定参数
also24
2018-08-01 21:59:20 +08:00
@jowan #8
可能是不同的浏览器的具体实现不同,不过结合那篇文章里引发战争的情况来看,我感觉以后搞东西,header 还是轻一点比较好
YMB
2018-08-02 13:45:30 +08:00
没错,是要这样指定,但我印象中如果不指定手机和 pc 都收不到。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476069

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX