当前位置: 首页 > 面试题库 >

我以为跨子域AJAX请求是允许的,但是此Chrome错误似乎表明是其他情况

朱令
2023-03-14
问题内容

我知道出于安全原因不允许跨域请求,但是我给人的印象是,只有顶级域需要匹配,不同的子域也可以。但是,我从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中执行此操作。是否有一些类似的标志,或者可以在“首选项”中的某个位置进行设置? 感谢帮助。 问题答案: 解决方案是在服务器上设置标头。 在

  • 问题内容: 阅读有关CORS(跨源资源共享)的信息后,我不了解它如何提高安全性。如果发送了正确的ORIGIN标头,则允许跨域AJAX通信。例如,如果我发送 来源:http://example.com 服务器检查此域是否在白名单中,以及是否在标头中: 访问控制允许来源:[此处接收的网址] 与响应一起发送回去(这是简单的情况,也有预先要求的请求,但问题是相同的)。 这真的安全吗?如果有人想接收该信息,