我知道出于安全原因不允许跨域请求,但是我给人的印象是,只有顶级域需要匹配,不同的子域也可以。但是,我从Chrome 7中收到此错误:
“不安全的JavaScript试图从URL为http://bar.somedomain.com/otherdir/otherpage.html的框架访问URL为http://foo.somedomain.com/dir/page.html的框架。域,协议和端口必须比赛”
这些类型的请求的确切规则是什么?
简而言之,相同来源策略的规则是:
在您的示例中,您违反了主机规则,因为即使第二级域相同,另一个子域也可能指向另一个主机/ IP。
如果没有其他可能性,则可以尝试在ajax请求中使用JSONP;否则,可能会失败。这没有SOP。
参考
问题内容: 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。 我在脚本顶部仅添加了以下两行,以使它们能够做到: 现在我的问题是:这里是否遗漏了任何安全方面的考虑?这个简单的解决方案会带来严重的问题吗? 如果是这样,什么是更好的解决方案? 感谢您的回复。 问题答案: 如上所述,任何人都可以随时向您的页面发送请求:因此,您需要考虑的主
在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展<我只是在我的脚本顶部添加了这两行,让他们完成这项任务: 现在我的问题是:这里有我错过的任何安全考虑吗?这个简单的解决方案会产生严重的问题吗? 如果是,更好的解决方案是什么? 感谢您的回复。
我试图从我的新Angular应用程序中调用REST web服务。当发出请求时,我会得到以下错误: XMLHttpRequest无法加载http://localhost:8080/WebService。请求的资源上没有“访问-控制-允许-来源”标头。因此,不允许访问源“http://localhost”。 我发现这是因为浏览器不允许这样的操作。 编辑我也试着把它添加到我的angular应用程序中:
问题内容: 我正在看这个问题,它是http://hacks.mozilla.org/2011/03/the- shortest-image-uploader-ever/ 的链接,其中包含以下代码: 此跨域请求如何工作?我认为通常有一些安全限制阻止人们这样做。 问题答案: 服务器正在响应,并将Access-Control-Allow-Origin设置为允许跨域请求 http://www.w3.org
问题内容: 我有从本地主机运行的webapp(由于调试),它发出了跨域AJAX请求。我可以轻松地为Chrome设置标志“ –disable-web- security”,并且webapp可以在Chrome中按预期工作。但是我也需要在Windows上的Safari中执行此操作。是否有一些类似的标志,或者可以在“首选项”中的某个位置进行设置? 感谢帮助。 问题答案: 解决方案是在服务器上设置标头。 在
问题内容: 除了JSONP,为什么要遵循相同的域策略? 问题答案: 出于安全原因,已实施“同源起源策略”;引用维基百科的相关句子: 这种机制对现代Web应用程序具有特殊的意义,因为Web服务器广泛依赖于HTTP cookie来维护经过身份验证的用户会话,因为服务器基于HTTP cookie信息进行操作以揭示敏感信息或执行状态更改操作。 必须在客户端维护不相关站点提供的内容之间的严格分隔,以防止丢失