我正在向我们的API(服务器/ api /我自己)之一发送请求,该API返回http状态代码302和位置重定向(服务器/ api / user12345)。
我们的API仅可通过有效的访问令牌访问,该访问令牌作为承载令牌在授权标头中发送。
在Chrome浏览器中,所有操作均按预期进行:
在Safari中不起作用。
Safari中的请求如下所示:
Summary
URL: https://some-url.com/users/myself
URL: https://some-url.com/users/user12345
Status: —
Source: —
Request
GET /users/myself
Authorization: Bearer Sometoken
Accept: application/json, text/plain, */*
Origin: http://localhost:8080
Referer: http://localhost:8080/tabs/overview
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15
Cache-Control: max-age=0
Redirect Response
302 Found
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Methods
Access-Control-Expose-Headers
Access-Control-Allow-Headers
Location: https://some-url.com/users/user12345
Access-Control-Allow-Credentials: true
Date: Wed, 17 Jul 2019 05:53:01 GMT
Request
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15
Accept: application/json, text/plain, */*
Referer: http://localhost:8080/tabs/overview
Origin: http://localhost:8080
Cache-Control: max-age=0
Response
No response headers
我希望Safari中的请求与Chrome中的请求相同。
相反,我收到错误"Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin."
Access-Control-Allow-Origin是在后端设置的,并且也会在请求中显示。
在服务器端进行调试时,我发现好像没有为重定向的位置/ user12345设置授权标头,因此失败了。
这似乎是Safari特有的问题?还是我错过了什么?如果是这样,为什么它在Chrome中可以正常工作?