javascript - document.domain 相同但仍然出现同源错误

标签 javascript cors cross-domain same-origin-policy

我有一些看起来像这样的 javascript:

// https://secure.example.com
document.domain = "example.com";
window.myVar = "value";

// http://example.com
document.domain = "example.com";
var iframe = document.body.appendChild(document.createElement("iframe"));
iframe.onload = function () {
    console.log(iframe.contentWindow.myVar);
}
iframe.src = "https://secure.example.com";

我正在尝试通过将 https://secure.example.com 加载到 http://example 中的 iframe 来访问 myVar。 com。请注意 httphttps 的用法。当两个域都使用 httphttps 这有效,但现在我想让一个使用 http 而另一个使用 https 。我已经通过代码来验证 document.domain 是否设置正确。为什么会这样?

最佳答案

您的问题不是域或主机。你的问题是协议(protocol)

不能跨协议(protocol)设置document.domain

httphttps 由于协议(protocol)原因不是同一来源,就像 example.com:80 由于端口原因与 example.com:8080 不是同一来源.

有很好的安全理由不允许混合使用 http 和 https

请阅读https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

关于javascript - document.domain 相同但仍然出现同源错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895192/

相关文章:

javascript - 我应该在 sinon.js 中模拟 cors OPTIONS 请求还是如何测试跨域 ajax 请求?

javascript - 切片和拼接不适用于数组值

javascript - 单击其他位置在 jquery 中不起作用

php - AngularJS,PHP Restful Cors 问题

asp.net - 使用 ASP.NET Web API 对 PUT 和 DELETE 的 CORS 支持

php - 跨域 session -跨域共享购物车

javascript - Access-Control-Allow-Origin 不允许来源

javascript - 如何使元素在滚动时仅显示在容器上

javascript - 在一定时间后终止 Javascript 进程

javascript - 无法访问维基数据 API