为什么浏览器不允许跨域 AJAX 请求? 哪里可以从其他域检索javascript / css文件! 我知道有办法解决这个问题,但我想知道是什么因素导致浏览器不允许跨域ajax调用。 更具体地说:如果任何javascript文件或css可以通过脚本或链接html标签访问为什么它不能通过ajax调用访问?为什么允许使用跨域链接/脚本标记而不是ajax?
答案 0 :(得分:3)
这是为了用户安全:
假设您已登录Facebook并在另一个浏览器标签中访问恶意网站。如果没有相同的原始政策,该网站上的JavaScript可以对您允许的Facebook帐户执行任何操作。例如,在提交表单之前输入密码后,阅读私人消息,发布状态更新,分析HTML DOM树。
来自here
更新:
1-当您使用script
或link
或img
标记定位文件时,您正在从其服务器下载该文件,然后其操作仅限于您的域上下文(访问你的DOM,操纵你的DOM ......)。
2-但是当你想对另一个网站进行ajax调用时,你可能有能力对该网站进行更改。因此,为了避免这种风险,浏览器会检查您的网站请求并获得响应。如果它是no
,那么浏览器拒绝您的请求,如果它是yes
,那么它passes
您对服务器的请求。另一方面,它是允许或拒绝跨源请求的目标网站。
3-它不仅仅是Ajax
,还有webSocket
甚至是Flash
。