【发布时间】:2025-12-01 00:30:01
【问题描述】:
我有一些看起来像这样的 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.com 中的iframe 中来访问myVar。注意http 和https 的用法。当两个域都使用http 或https 时,这行得通,但现在我想让一个使用http,另一个使用https。我已经通过代码来验证document.domain 是否设置正确。为什么会这样?
【问题讨论】:
-
http 和 https 的来源不同,就像 example.com:80 与 example.com:8080 的来源不同一样。有很好的理由不允许混合 http 和 https
-
显然是这样,但我找不到任何关于设置
document.domain如何影响或不影响协议检查的信息。 -
这无关你不能跨协议使用 document.domain - developer.mozilla.org/en-US/docs/Web/Security/…
-
"但我找不到任何有关设置 document.domain 如何影响或不影响协议检查的信息" - developer.mozilla.org/en-US/docs/Web/API/Document/domain: "Gets/sets 当前文档来源的域部分”
-
在同源策略的文档中,它们指的是主机/端口/协议。它从不等同于域和主机。我想这就是混乱的根源。
标签: javascript cors cross-domain same-origin-policy