Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.domain错误_Javascript_Same Origin Policy - Fatal编程技术网

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.