文档:域属性

已弃用:此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已从相关 Web 标准中删除,可能正在被删除,或者可能只是为了兼容性而保留。避免使用它,如果可能,请更新现有代码;查看此页面底部的兼容性表,以指导您的决策。请注意,此功能可能随时停止工作。

domain 属性是 Document 接口的属性,用于获取/设置当前文档 的域部分,如 同源策略 所使用。

一个字符串。

异常

SecurityError DOMException

使用此功能被权限策略阻止。

示例

获取域名

对于在 URL https://mdn.org.cn/en-US/docs/Web 上运行的代码,此示例将 currentDomain 设置为字符串 "developer.mozilla.org"。

js
const currentDomain = document.domain;

此属性的 getter 返回当前文档原点的域名部分。在大多数情况下,这将是文档 URL 的主机名部分。但是,也有一些例外。

  • 如果页面具有不透明的来源,例如具有数据 URL 的页面,则它将返回空字符串。
  • 如果 document.domain setter 已被使用,则它将返回设置的值。

尽管 getter 并不像 setter 那样危险,但使用Location.hostname 属性可能更简单、更有用。这样你就可以完全避免使用 document.domain

js
const currentHostname = location.hostname;

对于 URL https://mdn.org.cn/en-US/docs/WebcurrentHostname 也是字符串 "developer.mozilla.org"。其他提供略微不同信息的替代方案是Location.host(它包含端口)和Window.origin(它提供完整的来源)。

设置域名

js
document.domain = domainString;

此属性的 setter 可用于更改页面的来源,从而修改某些安全检查的执行方式。它只能设置为相同或父域名。例如,如果 https://a.example.comhttps://b.example.com 都使用

js
document.domain = "example.com";

那么它们都已修改了它们的来源以具有相同的域名,并且现在可以直接访问彼此的 DOM,尽管它们是跨域的,通常情况下会阻止这种访问。

请注意,将 document.domain 设置为其当前值并非无效操作。它仍然会更改来源。例如,如果一个页面设置

js
document.domain = document.domain;

那么它将被视为来自任何其他通常同源页面(未执行相同操作)的跨域页面。

弃用

document.domain setter 已被弃用。它会破坏由同源策略提供的安全保护措施,并在浏览器中使来源模型变得复杂,从而导致互操作性问题和安全漏洞。

尝试设置 document.domain 是危险的。它会从所有子域名打开对页面 DOM 的完全访问权限,这可能并非预期结果。它还会从来源中删除端口组件,因此现在你的页面可以被具有相同 IP 地址或相同主机组件的其他页面访问,即使它们位于不同的端口上。

这在共享主机上尤其不安全。例如,另一个共享主机客户能够在相同 IP 地址但不同端口上托管一个站点,然后设置 document.domain 将删除通常保护你免受该其他客户站点访问你的站点数据的同源保护。

类似问题发生在为每个客户提供不同子域名的共享主机站点上。如果一个站点设置了 document.domain,那么任何其他位于不同子域名的客户现在都可以执行相同操作,并开始访问原始站点的數據。

你应该使用Window.postMessage 向另一个来源发送异步消息,而不是使用 document.domain 来促进跨域通信。通过消息传递进行的这种受控访问比 document.domain 造成的对所有数据的全面暴露安全得多。

失败

在几种情况下,setter 将抛出 "SecurityError" DOMException

作为此最后一个失败案例的示例,尝试将 document.domain 设置为 "example.org" 时,当在 https://example.com/ 上时将抛出错误。

此外,作为其弃用的一部分,它在与某些现代隔离功能结合使用时将不会执行任何操作。

最后,设置 document.domain 不会更改某些 Web API 用于来源检查的来源,从而阻止通过此机制进行子域访问。受影响的 API 包括(但不限于):Window.localStorageIndexDB APIBroadcastChannelSharedWorker

规范

规范
HTML 标准
# 放松同源限制

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅