2011-03-21 51 views
11

除了JSONP之外,为什么还要遵循相同的域策略?为什么不允许跨域AJAX调用?

+0

的DUP:为什么AJAX请求仅限于同一域?(http://stackoverflow.com/questions/3156710)和[为什么跨域Ajax存在安全问题?( http://stackoverflow.com/questions/466737) – 2011-03-21 20:12:53

+0

可能重复的[反跨域策略是什么?](http:// stackoverflow。com/questions/3113253/what-the-point-of-the-anti-cross-domain-policy) – 2011-03-21 20:13:17

回答

11

出于安全原因已实施相同来源策略;从wikipedia引用了相关的句子:

该机制承担的是大量关于HTTP饼干取决于 保持 身份验证的用户会话现代Web 应用程序特定 意义,因为 服务器行为基于HTTP cookie的 信息以显示敏感信息或采取变化 行动。
严格分离 内容之间提供的无关 网站必须保持在客户端 方,以防止数据丢失保密性或完整性。

基本上,你不希望任何给定网站不要(像任何网站,你可能会冲浪 - 我们都知道人有时候,你不应该信任的网站到达)能够访问数据从任何其他人(如您的网络邮箱,或社交网络帐户)

+2

通过使用新鲜的Cookie,难以避免安全问题? – 2014-08-04 21:55:39

6

因为Same origin policy

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

举一个例子,看看这个:

你去你喜欢的网络邮件程序 - 它可能是Gmail,雅虎邮件,Hotmail或私人公司内部网络邮件程序。

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

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

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

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

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