Safari从http状态302重定向中丢失了位置上的Authorization标头

时间:2019-07-17 06:43:28

标签: safari cors mobile-safari angular-httpclient

我正在向我们的API(服务器/ api /我自己)之一发送请求,该API返回http状态代码302和位置重定向(服务器/ api / user12345)。

我们的API仅可通过有效的访问令牌访问,该访问令牌作为承载令牌在授权标头中发送。

在Chrome浏览器中,所有操作均按预期进行:

  • 客户端向/ myself发送状态为200的期权请求
  • 客户端向/ myself发送状态为302的请求
  • 客户端将状态为200的选项请求发送到/ user12345
  • 客户端将状态为200的请求发送到/ user12345并回复我 用户资源。

在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中可以正常工作?

0 个答案:

没有答案