CORS 预检请求的奇怪问题在 IE 11 上失败
Strange issue with CORS preflight request fails on IE 11
问题是 POST 查询在 IE11 上失败,在所有其他浏览器中它似乎都可以工作。
让我们一步一步地描述问题:
- 从应用程序到 REST API 的 XHR 请求。
- 印前检查选项请求(请求参数如下)
Accept: */* Origin: https://app.example.com Access-Control-Request-Method: POST Access-Control-Request-Headers content-type, accept : Accept-Encoding: gzip, deflate User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko Host: api.example.com Content-Length: 0 Connection: Keep-Alive Cache-Control: no-cache
- 印前检查请求响应参数包括:
X-Powered-By: Sugar Access-Control-Allow-Origin: https://app.example.com Vary: Origin Access-Control-Allow-Credentia true ls: Access-Control-Allow-Methods: GET,POST,DELETE,OPTIONS Access-Control-Allow-Headers: X-Requested-With,X-HTTP-Method-Override,Content-Type,Accept set-cookie: sugar.sid=s%Pb9OoTTPUkVw%2F2vUPoFMNG LMXACSkQevo; Path=/; Expires=Thu, 15 Jan 2015 18:27:07 GMT; HttpOnly; Secure Date: Mon, 12 Jan 2015 18:27:07 GMT Connection: close
- 预检后的真实 HTTP 请求参数:
Accept: application/json Content-Type: application/json Referer: https://app.example.com/ Accept-Language: en-US Origin: https://app.example.com Accept-Encoding: gzip, deflate User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko Host: api.example.com Content-Length: 9 Connection: Keep-Alive Cache-Control: no-cache Cookie: sugar.sid=s%3A-%2FGF1YoFmRfmBsxK4vLBoGjY5NT0QoYvf5s;
- 最后响应参数:
Content-Type: application/json; charset=utf-8 Content-Length: 72 Vary: Accept-Encoding Date: Mon, 12 Jan 2015 18:27:07 GMT Connection: close
- 基本上响应以IE错误结束:原产地:https://app.example.com 在访问控制允许源头中找不到。第一个请求是否还需要似乎缺少的访问-**-源标头。
也按照CORS流程图调试问题,但我 http://www.html5rocks.com/static/images/cors_server_flowchart.png 无法发现它。
我正在使用带有node-cors模块+修改选项的Node.js Express服务器。
我正在使用 Fiddler 在我的网站上调试此问题并收到以下消息:
HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Date: Mon, 12 Sep 2016 19:40:20 GMT
Content-Length: 103
{"Message":"The collection of headers 'accept,if-modified-since,cache-control,pragma' is not allowed."}
CORS集合的标头接受,如果修改以来,缓存控制,杂注
所以我只是在我的 web.api 中添加了 CORS 缺少的标头列表。
我希望这对某人有所帮助。
相关文章:
- jQuery代码在Firefox中工作,但在IE中失败
- Javascript正则表达式在IE中失败,但在Chrome和Edge中工作
- 使用空媒体查询调用matchMedia失败,IE中的参数无效
- appendChild dataURI映像到window.open在IE中失败
- 在IE中显示iframe中的blob失败
- 为什么对img标记的前向引用在Chrome上失败,但在FireFox和IE上有效
- IE中的jQuery load()回调失败
- IE 焦点事件在 ajax 加载后随机失败
- CORS 预检请求的奇怪问题在 IE 11 上失败
- parseInt 在 IE 中失败
- getElementsBySelector 在 IE 8 中失败
- Ajax 请求在 IE 8 中似乎失败
- Ajax 调用在 chrome/safari 中工作,但在 ff 和 ie 中失败
- window.matchMedia('print') 在 Firefox 和 IE 中失败
- doPostback在IE 11+Windows 8.1中失败
- Firefox和IE再次失败帮助我的代码跨浏览器?JQuery自动滚动
- IE 9在展开缩略图网格版本中单击失败
- 循环使用Ajax的函数.仅在IE中失败.其他浏览器都能正常工作
- IE中的动画失败
- 从MS Excel复制粘贴在IE中失败,但在Firefox中有效