Javascript document.domain错误
Javascript document.domain错误,javascript,same-origin-policy,Javascript,Same Origin Policy,debug.log('2')从未触发。但是,控制台中没有错误。脚本只是停止执行。我无法根据您的问题推断您做错了什么,但要启用跨域脚本,您必须将document.domain设置为域的同一公共部分。同样相关的还有: 如果一方使用foo.guy.lt,另一方使用bar.guy.lt,则必须在两侧设置document.domain=“guy.ly” 如果将document.domain设置为guy.lt,则实际域必须是guy.lt本身或guy.lt的子域。你不能编造(子)域名 您必须始终明确指定do
debug.log('2')
从未触发。但是,控制台中没有错误。脚本只是停止执行。我无法根据您的问题推断您做错了什么,但要启用跨域脚本,您必须将document.domain
设置为域的同一公共部分。同样相关的还有:
- 如果一方使用
foo.guy.lt
,另一方使用bar.guy.lt
,则必须在两侧设置document.domain=“guy.ly”
- 如果将
document.domain
设置为guy.lt
,则实际域必须是guy.lt
本身或guy.lt
的子域。你不能编造(子)域名
- 您必须始终明确指定
document.domain
的值,即使该值是实际的域本身
- 您永远不能将
document.domain
更改回更具体的子域。因此,如果实际域是www.guy.lt
,则可以将document.domain
更改为guy.lt
。但是,在进行此更改后,您无法将其更改回www.guy.lt
示例:
debug.log('0');
document.domain = 'guy.lt';
debug.log('1');
document.domain = 'wwww.guy.lt';
debug.log('2');
只有当两个页面明确地将document.domain
设置为相同的值时,才允许通过document.domain
进行跨域访问。这是必要的安全措施;否则something.company.com
可以将document.domain
设置为company.com
并从company.com
读取内容。事实上,只有当company.com
通过将document.domain
设置为company.com
@minitech:编辑问题然后回答它时,它才能显式选择,而不是回答原始问题。错误消息如图所示。运行此脚本的页面的实际域是什么?我不会冒昧地认为,仅仅因为您不了解相同的域安全模型,它就自动意味着这是一个bug。你真的需要列出这两个网站的完整域名。不仅仅是将document.domain设置为什么。是的,在我的例子中,双方都使用document.domain
www.guy.lt
。因此,这个评论是不相关的。Elian所说的完全相关。公平地说,我根据Guys reply和更新后的问题更新了我的答案:-)它仍然没有回答我的问题,因为错误是试图从www.foo.com连接到www.foo.com,而两者上的document.domain设置为相同的www.foo.com。这可能是FF错误或其他原因,因为我在Chrome中没有遇到相同的错误。无论如何,在两端将document.domain设置为foo.com解决了这个问题。
debug.log('0');
document.domain = 'guy.lt';
debug.log('1');
document.domain = 'wwww.guy.lt';
debug.log('2');
// Actual domain is "www.foo.com"
document.domain = "foo.com"; // this is valid
// Actual domain is "bar.foo.com"
document.domain = "www.foo.com"; // this is invalid, "bar.foo.com" is not a subdomain of "www.foo.com"
// Actual domain is "blah.bar.foo.com"
document.domain = "bar.foo.com" // Ok
document.domain = "foo.com" // Still ok
document.domain = "bar.foo.com" // Invalid, you can't change it back to a more specific domain.