浏览器在JS重定向后发送错误/先前的原始标头

问题描述 投票:1回答:2

我正在开发需要访问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)可能会阻止这种情况有效发生”。但是没有太多信息可以帮助解决此问题。

javascript cors reload
2个回答
3
投票

当我尝试从另一个子域获取相同文件时,我遇到了同样的问题。

通过在响应中添加“ Vary:Origin”标头来解决。参考:https://forums.aws.amazon.com/thread.jspa?messageID=378304

希望也对您有用。


0
投票

您解决了这个问题吗?

我们遇到了问题。当Chrome打开两个标签时,一个标签为XXX.com,另一个标签为XXX.link。然后事情就错了。来自XXX.link的资源请求来自错误的来源XXX.com。

偶然发生。有谁有同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.