这是一个创建于 819 天前的主题,其中的信息可能已经有所发展或是发生改变。
症状:
AJAX 调用服务器获取 JSON ,几个主要参数使用 querystring 形式,使用 GET 一切正常,但是 POST 则直接 403
推敲:
反复试验,因为甭管 GET 还是 POST ,参数全都通过 querystring 提供,实际并没有 POST BODY 。
刚开始怀疑服务器端有 filter 拦截,但是没有发现;
然后 curl -d "" "{url}"正常,curl "{url}"也正常;
逼着用了 IE 做实验,POST 和 GET 仍然正常。
最后成了唯一不正常的就是 Edge(v102.0.1245.44),然后用了新版本提供的“网络控制台”工具(类似 postman ),把 BODY 设置为 form-data 、x-www-form-urlencoded 、raw text 就没问题了(即便没有实际内容),BODY 调到 none ,妥妥的 403 ,更神奇的在 header 里手动设置 content-type: none 或者无论什么值乃至空字符串——只要有这个 option ,那就没有问题。
推论:
如果要说 403 是服务器返回的,但是为什么 curl 和 IE 不返 403 ,唯独 edge ?这天天升级的浏览器,是又弄什么幺蛾子了? edge 的核心 chromium 加什么新特性了??
5 条回复 • 2022-06-23 00:58:17 +08:00
|
|
1
aaronlam 2022-06-22 23:43:29 +08:00
用 wireshark 什么的抓一下包呢
|
|
|
2
cpstar 2022-06-22 23:56:47 +08:00
修正问题,继续调试,header 加上 Original ,没有 content-type ,就会产生 403
|
|
|
3
cpstar 2022-06-23 00:20:39 +08:00
没事了,他娘的 CORS 的问题
|
|
|
4
hua123s 2022-06-23 00:23:39 +08:00 via iPhone 2
😅空气中弥漫着尴尬的气息
|
|
|
5
wunonglin 2022-06-23 00:58:17 +08:00
其实看控制台就能知道的问题
|