我已按照此步骤设置我的服务器以启用CORS。
https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
但现在在我的浏览器开发控制台中,我看到此错误消息:
XMLHttpRequest无法加载 https://开头serveraddress / ABC。回应
预检无效(重定向)
你知道我该怎么做才能修好它?我在HTTPS中发出CORS请求。我认为这导致'预检无效(重定向)'失败。但我不知道为什么或什么是重定向OPTIONS请求。
谢谢。
您的代码导致您的浏览器发送 CORS预检OPTIONS请求 这是一个重定向。
在这种情况下,浏览器目前拒绝遵循重定向,因为CORS规范以前需要浏览器才能这样做。该限制实际上不再符合规范,但浏览器需要更新其实现以匹配规范更改。
您可以调整代码以避免触发浏览器发送OPTIONS请求。
至于这种情况的全部情况,首先要注意的是,浏览器在以下情况下进行CORS预检:
- 请求方法不是GET,HEAD或POST
- 你已经设置了自定义请求标题
Accept
, Accept-Language
, Content-Language
, Content-Type
, DPR
, Downlink
, Save-Data
, Viewport-Width
, 要么 Width
- 该
Content-Type
请求标头具有除以外的值 application/x-www-form-urlencoded
, multipart/form-data
, 要么 text/plain
如果您无法更改代码以避免浏览器需要进行预检,那么另一个选项是:
- 检查响应并查看服务器在OPTIONS之后重定向到的URL。
- 更改代码以直接向其他URL发出请求。
见答案 预检和重定向的CORS请求:不允许。解决方法? 有关可能的解决方法的详细信息
同样如上所述,对于不遵循CORS预检重定向的浏览器的限制不再在规范中,但浏览器需要更新其实现以匹配规范更改。
您的代码导致您的浏览器发送 CORS预检OPTIONS请求 这是一个重定向。
在这种情况下,浏览器目前拒绝遵循重定向,因为CORS规范以前需要浏览器才能这样做。该限制实际上不再符合规范,但浏览器需要更新其实现以匹配规范更改。
您可以调整代码以避免触发浏览器发送OPTIONS请求。
至于这种情况的全部情况,首先要注意的是,浏览器在以下情况下进行CORS预检:
- 请求方法不是GET,HEAD或POST
- 你已经设置了自定义请求标题
Accept
, Accept-Language
, Content-Language
, Content-Type
, DPR
, Downlink
, Save-Data
, Viewport-Width
, 要么 Width
- 该
Content-Type
请求标头具有除以外的值 application/x-www-form-urlencoded
, multipart/form-data
, 要么 text/plain
如果您无法更改代码以避免浏览器需要进行预检,那么另一个选项是:
- 检查响应并查看服务器在OPTIONS之后重定向到的URL。
- 更改代码以直接向其他URL发出请求。
见答案 预检和重定向的CORS请求:不允许。解决方法? 有关可能的解决方法的详细信息
同样如上所述,对于不遵循CORS预检重定向的浏览器的限制不再在规范中,但浏览器需要更新其实现以匹配规范更改。