浏览器限制跨域ajax请求

时间:2014-08-26 06:04:14

标签: javascript ajax

为什么浏览器不允许跨域 AJAX 请求? 哪里可以从其他域检索javascript / css文件! 我知道有办法解决这个问题,但我想知道是什么因素导致浏览器不允许跨域ajax调用。 更具体地说:如果任何javascript文件或css可以通过脚本或链接html标签访问为什么它不能通过ajax调用访问?为什么允许使用跨域链接/脚本标记而不是ajax?

1 个答案:

答案 0 :(得分:3)

这是为了用户安全:

  

假设您已登录Facebook并在另一个浏览器标签中访问恶意网站。如果没有相同的原始政策,该网站上的JavaScript可以对您允许的Facebook帐户执行任何操作。例如,在提交表单之前输入密码后,阅读私人消息,发布状态更新,分析HTML DOM树。

来自here

更新:

1-当您使用scriptlinkimg标记定位文件时,您正在从其服务器下载该文件,然后其操作仅限于您的域上下文(访问你的DOM,操纵你的DOM ......)。

2-但是当你想对另一个网站进行ajax调用时,你可能有能力对该网站进行更改。因此,为了避免这种风险,浏览器会检查您的网站请求并获得响应。如果它是no,那么浏览器拒绝您的请求,如果它是yes,那么它passes您对服务器的请求。另一方面,它是允许或拒绝跨源请求的目标网站。

3-它不仅仅是Ajax,还有webSocket甚至是Flash