我在a.example.com
和b.example
上托管了两个网页。每个网页都包含一个带有<script>
标记的脚本,托管在另一个域上,并提供正确的CORS标头。
在某个时刻,用户会从a.example.com
导航到b.example.com
。
Safari在这里有一种奇怪的行为:预检请求中的referrer
和origin
标头填充了a.example.com
,使服务器在Access-Control-Allow-Origin
中发送错误值(和所以脚本无法执行。)
有没有办法强制Safari浏览器在这种情况下发送正确的origin
标题?
答案 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上重现。