【问题标题】:Javascript same origin security issueJavascript同源安全问题
【发布时间】:2009-07-28 08:37:18
【问题描述】:

我学习了Javascript同源概念,这意味着Javascript代码只能访问下载它的主机。

我的困惑是,我开发了 Javascript 代码,将代码本地存储到 .js 文件中,并从另一个本地 html 文件调用 Javascript 代码。当我使用 IE 打开本地 html 文件时,我发现 Javascript 可以访问任何主机,例如 Google 和 Bing。

这是我的代码。我的困惑是,似乎 Javascript 相同的原始安全限制不适用于本地运行的 Javascript?

Javascript XMLHttpRequest issue

提前致谢, 乔治

【问题讨论】:

    标签: javascript html security


    【解决方案1】:

    同源策略意味着xmlhttp请求可以在加载和执行js的同一个域进行,它被所有浏览器强制执行,另外,如果你正在开发ajax代码,执行它是没有意义的来自与您将加载页面的域不同的域。

    IE 对本地文件的 SOP 进行了一些例外处理,但这些都是边缘情况,您不应该为它们烦恼。

    【讨论】:

    • 感谢匿名,您的意思是对于本地 js 和 html 文件,同源策略不适用吗?
    • 如果是,您还有其他文件要证明吗?
    • 不,IE 中的 SOP 只有少数例外,在 FF 中,您可以通过调整 about:config 中的首选项禁用它,请参阅kb.mozillazine.org/Security.fileuri.strict_origin_policy。但我真的认为你应该测试你的 ajax 代码,因为它应该被使用。
    • 谢谢,但我认为您的文档不适用于 IE?是火狐吗?
    【解决方案2】:

    当您说“访问任何主机”时,您是什么意思?

    你的意思是当你的代码在谷歌上加载一个 URL 时你会收到通知,还是你的意思是你可以询问加载页面的 HTML DOM。

    我非常怀疑你能否做到后面。我记得根据这样做的经验(不久前),应该可以接收到页面已加载的通知 - 只是您根本无法看到或修改该页面上的任何内容。

    【讨论】:

    • 谢谢大卫,我的意思是我可以从 google.com 发送请求并检索响应。我认为它违反了同源政策?
    猜你喜欢
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多