javascript - 浏览器在 JS 重定向后发送错误/先前的源 header

标签 javascript cors reload

我正在开发一个需要访问 CORS 资源的应用程序。在应用程序中,用户可以更改他们的子域(即 - 从 mysubdomain.myapp.com 到 mynewsubdomain.myapp.com)。

服务器读取原始 header 并将该子域添加到 CORS 请求的允许来源。

我的问题是,在用户更改其子域后,我执行了一个简单的 window.location.href = mynewsubdomain 重定向,但这导致资源加载(JS 和样式)失败并出现错误:

来自源“http://localhost:7000”的字体已被跨源资源共享策略阻止加载:“Access-Control-Allow-Origin” header 的值为“http://old.myapp.dev”那不等于提供的来源。因此不允许访问来源“http://new.myapp.dev”。

检查 Chrome 中的网络请求,我可以看到请求 header 中的来源仍然是 http://old.myapp.dev,这似乎是这里的问题。随后的页面加载工作正常。有什么我可以做的吗?我可以指示浏览器使用正确的(新的)子域作为来源吗?我应该以不同的方式重定向吗?

MDN 关于更改 window.location.href 是这样说的:“请注意,像 CORS 这样的安全设置可能会阻止这种情况的发生”。但是没有太多信息可以帮助解决这个问题。

最佳答案

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

通过在响应中添加“Vary: Origin” header 解决了这个问题。引用:https://forums.aws.amazon.com/thread.jspa?messageID=378304

希望这对你也有用。

关于javascript - 浏览器在 JS 重定向后发送错误/先前的源 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987836/

相关文章:

spring - 使用登录过滤器而不是 Controller 时处理 OPTIONS 和 CORS

google-app-engine - CORS授权 polymer 和goapp golang

php - .htaccess 不允许用户查看我的没有 index.php 的文件夹文件

javascript - 为什么我的编辑页面在 Laravel 中不起作用?我使用了 vue.js

php代码获取时区以及当前系统时间与GMT的差异

javascript - 移动 JS 应用程序上的 Location.reload()

javascript - 为什么每次将新条目提交到表单时我的 HTML 页面都会重新加载?

javascript - 通过浏览器禁用调试器语句

javascript - Safari 13+ iframe 阻止 CORS cookie

google-chrome - Chrome刷新右键重新加载选项不可用