我已按照此步骤设置我的服务器以启用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请求。
谢谢。
答案 0 :(得分:14)
您的代码正在触发您的浏览器发送CORS preflight OPTIONS
request,并且服务器正在使用3xx
重定向进行响应。它需要使用2xx
成功消息进行响应。
您可以调整代码,以避免触发浏览器发送OPTIONS
请求。
就这种情况所做的一切而言,重要的是要知道浏览器在以下情况下进行CORS预检:
GET
,HEAD
或POST
Accept
,Accept-Language
,Content-Language
,Content-Type
,DPR
,Downlink
,{{ 1}},Save-Data
或Viewport-Width
Width
请求标头的值不是Content-Type
,application/x-www-form-urlencoded
或multipart/form-data
如果您无法更改代码以避免浏览器需要进行预检,则另一个选项是:
text/plain
之后重定向到的URL。答案 1 :(得分:2)
有时,当您尝试将HTTPS服务称为http
时,就会发生这种情况for example when u perform a request on 'http://example.com/api/v2/tickets'
which should be 'https://example.com/api/v2/tickets'
答案 2 :(得分:2)
首先确保您在标题中有“Access-Control-Allow-Origin”:“*”
然后只需删除网址末尾的“/”
例如:
url: "https://facebook/api/login/"
到 ->
url: "https://facebook/api/login" (without '/')
答案 3 :(得分:2)
就我而言,我不必将请求标头设置为“Access-Control-Allow-Origin”:“*”。网址必须以“/”结尾