javascript - document.domain = document.domain 有什么作用?

标签 javascript orbited

Orbited的客户端JS组件( cometd 服务器),要求如果服务器运行在与 JS 本身不同的域或端口上,则必须执行

document.domain = document.domain;

在加载任何其他 JS 之前。 (参见 documentation 。)

这是做什么的?它看起来像一个 NOOP! (我已经查过了,其实是有必要的。)

最佳答案

我实际上写了这段代码。

尝试跨子域/端口 cometd 时,iframe 需要与父框架具有相同的 document.domain 值。不幸的是,浏览器在内部存储了原始 document.domain 值的域名和端口。但是 javascript 中的 getter 和 setter 对端口一无所知。所以问题是这样的:如果顶部框架 document.domain('example.com', 80),底部框架是 ('comet. example.com', 80),如何让底部框架也成为 ('example.com', 80)

你不能,因为更改主机名部分必然会导致端口设置为 null,所以你能做的最好的是 ('example.com', null) 在底部框架中。因此顶部框架也需要设置为该值,设置 document.domain=document.domain 就是这样做的。它将浏览器中的内部表示从 ('example.com', 80) 更改为 ('example.com', null) 然后所有内容匹配并交叉端口/子域框架通信有效。

关于javascript - document.domain = document.domain 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481251/

相关文章:

javascript - 检测某些元素外的点击

javascript - XmlHttpRequest 使用的底层传输协议(protocol)是什么?

javascript - 如何在 JS 中将大字符串(不是数字)格式化为货币?

python - 轨道评论服务器问题

comet - JSONP 长轮询始终加载

javascript - 如何保持 HTML 页面中 SWF 文件的大小?

javascript - Angular ng-admin 未加载

javascript - 是否可以编写一个使用 web 套接字进行传输的 javascript SSH 客户端?

python - 使用 Twisted 和 Comet 将命令结果流式传输回浏览器