我正在开发一款需要访问CORS资源的应用。在应用程序中,用户可以更改其子域(即 - 从mysubdomain.myapp.com到mynewsubdomain.myapp.com)。
服务器读取原始标头,并将该子域添加到CORS请求的允许来源。
我的问题是,在用户更改其子域后,我执行了一个简单的window.location.href = mynewsubdomain
重定向,但这会导致资源加载失败(JS和样式)并出现错误:
Font from origin 'http://localhost:7000' has been blocked from loading by Cross-Origin Resource Sharing policy: The 'Access-Control-Allow-Origin' header has a value 'http://old.myapp.dev' that is not equal to the supplied origin. Origin 'http://new.myapp.dev' is therefore not allowed access.
在Chrome中检查网络请求,我可以看到请求标头中的Origin仍然是http://old.myapp.dev
,这似乎是问题所在。后续页面加载工作正常。我可以做些什么吗?我可以指示浏览器使用正确的(新)子域作为原点吗?我应该以不同的方式重定向吗?
MDN说这有关改变window.location.href
:“请注意,安全设置,如CORS,可能会阻止这种情况有效发生”。但没有太多信息可以帮助解决这个问题。
答案 0 :(得分:3)
当我尝试从另一个子域获取相同的文件时,我遇到了同样的问题。
通过添加" Vary:Origin"解决了这个问题。标题为响应。参考:https://forums.aws.amazon.com/thread.jspa?messageID=378304
希望这也适合你。