为什么不允许跨域AJAX调用?

时间:2011-03-21 20:10:21

标签: ajax jquery same-origin-policy

除了JSONP,为什么要遵循相同的域策略?

2 个答案:

答案 0 :(得分:12)

出于安全原因,已实施同源政策​​;引用wikipedia中的相关句子:

  

这种机制具有特殊性   现代网络的意义   广泛依赖的应用程序   在HTTP cookie上维护   经过身份验证的用户会话,如   服务器基于HTTP cookie行事   揭示敏感的信息   信息或采取改变状态   动作。
严格分离   介于不相关的内容之间   网站必须在客户端维护   方防止数据丢失   机密性或完整性。

基本上,您不需要任何给定的网站(就像您可能正在浏览的任何网站一样 - 我们都知道人们有时会到达您不应该信任的网站)能够访问来自任何其他的数据(例如您的网络邮件或社交网络上的帐户)

答案 1 :(得分:6)

由于Same origin policy

存在同源策略以防止恶意使用资源。如果没有管理跨域脚本访问的规则,那么对不知情的用户造成各种各样的破坏将是微不足道的。例如,恶意网站很容易将您的会话信息抓取到另一个站点并代表您执行操作。

举一个例子,考虑一下:

您可以访问自己喜欢的网络邮件程序 - 它可能是Gmail,Yahoo邮件,Hotmail或私人内部公司网络邮件程序。

登录并检查电子邮件后,单击指向在新标签页中打开的恶意网站的链接。

恶意网站会检查http referer并发现您来自您的电子邮件帐户。

使用跨域脚本,恶意网站会重新进入您的电子邮件标签,并下载您的地址簿和所有电子邮件(或者在您关闭弹出窗口之前可以获得的许多电子邮件)。

随后,在扫描您的电子邮件以查找密码,财务数据和其他敏感材料后,它会向您的所有联系人发送一封来自您的电子邮件,该电子邮件支持同一网站。 这只是一个例子。一个更阴险的阴谋将涉及恶意第三方使用您的浏览器来蜘蛛您公司的内部网,泄露机密信息作为不知情的帮凶!

更多关于http://jimbojw.com/wiki/index.php?title=Introduction_to_Cross-Domain_Ajax