我们有一个包含两个字母的域名。对于所有版本,这是 IE 的问题。
问题是当我们设置 document.domain="xx.yy"
时,我们得到一个“无效参数”异常。
有没有人有关于如何解决此错误的解决方案或想法?
问候, 托拜厄斯
最佳答案
对于哪些域可以用作跨文档脚本和 cookie 共享的共享父域存在限制。
这是故意的:否则,example.co.uk
和 other-example.co.uk
可以作为同一网站 co.uk 的一部分
。出于隐私和安全原因,浏览器不允许这样做。
问题是 DNS 系统没有正式的方式来声明 co.uk
是注册管理机构分配的域,不同的组织生活在该域下,但是 bit.ly
是一个单一的组织。这在某些地方甚至更难,例如 .jp
,它既有直接组织子域,也有注册表分配的子域,例如 co.jp
。
因此,浏览器对于哪些域应被视为“公共(public)”以及不应允许共享脚本/凭据上下文有内部规则,并且当有新的 TLD 和 SLD 时,必须更新这些规则。较旧的浏览器可能无法识别较新的域。
一些浏览器从 Public Suffix List 获取信息,虽然不是 IE。 IE 似乎正在使用启发式方法,对于它不知道并且有特殊情况的 TLD,2 个字母的子域 xx.yy
可能是公共(public)域(例如 co.uk
、or.jp
或其他)并且不应被允许充当共享父域。这是一个合理的猜测,IMO:最好是“故障安全”。
我认为您无法绕过它。你想做什么,可能有另一种方法吗?你能把所有跨子域脚本的东西放在一个子域中吗?
关于javascript - 带有 2 个字母域名的 document.domain 在 IE 中存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4068699/