Safari导航器和原始预检请求标头在用户导航时不会更改

时间:2016-09-15 14:53:07

标签: safari cors

我在a.example.comb.example上托管了两个网页。每个网页都包含一个带有<script>标记的脚本,托管在另一个域上,并提供正确的CORS标头。

在某个时刻,用户会从a.example.com导航到b.example.com

Safari在这里有一种奇怪的行为:预检请求中的referrerorigin标头填充了a.example.com,使服务器在Access-Control-Allow-Origin中发送错误值(和所以脚本无法执行。)

有没有办法强制Safari浏览器在这种情况下发送正确的origin标题?

2 个答案:

答案 0 :(得分:1)

脚本的缓存策略是否包含Vary: Origin

导航到b.example.com后,实际上是否有第二个请求?

如果没有,Safari实际上有可能从缓存中提供脚本 - 尽管Access-Control-Allow-Origin策略禁止它访问资源。如果未正确配置缓存策略,那么这是一种符合标准的行为。

答案 1 :(得分:0)

这似乎确实是一个Safari bug。

此问题在Safari 10.0上无法重现。它仅在Safari 9.1.1 / 9.1.3上重现。