我知道如果我们有payment.example.com和news.example.com,他们都将document.domain设置为exmaple.com,他们可以进行通信。但是,如果en.news.example.com选择加入并设置document.domain = example.com,该怎么办?是否也可以沟通?
答案 0 :(得分:0)
<强> document.domain的强>
获取/设置当前文档原点的域部分,由同一原始策略使用。
same-origin policy限制从一个来源加载的文档或脚本如何与来自另一个来源的资源进行交互。它是隔离潜在恶意文档的关键安全机制。
示例:
// for document www.example.xxx/good.html,
// this script closes the window
var badDomain = "www.example.xxx";
if (document.domain == badDomain)
window.close(); // Just an example - window.close() sometimes has no effect.
var domain = document.domain;
更改此属性的值是解决当您的网页位于同一网站的不同子网域时应用相同原始策略的限制的最简单方法。虽然JavaScript通常会将来自blog.example.com和来自forum.example.com的页面视为来自不同的来源,因此不允许一方的JavaScript与另一方的网页进行交互,您可以通过设置文档来解决此特定限制两个页面中的.domain为相同的值。通过在所有脚本中将document.domain设置为域名的最短版本,您可以允许JavaScript跨站点的所有页面进行通信,而不管协议,子域或端口。