ajax存在跨域问题,为什么浏览器不允许js跨域请求?(same origin 策略限制)

大家都知道ajax存在跨域问题,而form提交就不存在,搜了很多资料,大家都说浏览器出于安全性不允许js跨域请求。但js跨域有哪些安全问题呢?

阅读 8.2k
9 个回答

js可以通过页面修改直接执行。

js 代码是藏不住的,都被加载到页面了.
楼主的站点的页面里应用了 ajax,我通过读 js 代码找到了你请求的 url,然后我自己开了个网站,不断的用你的 URL 请求,你说你的服务器炸不炸.

可能有不对的地方,但大致就是这么个道理

很简单的说一个例子吧,如果你登录一个网站,然后这个通过ajax跨域请求请求segmentfault的接口把你segmentfault 的所有问题都删除掉了,那不是很变态?

比如我的脚本拿着你的cookie把你的钱转到我的账户?

楼上们说了很多,我来补充一点,浏览器很多时候都会从user的角度出发,当user手动访问一个网站,这个网站就是他信赖的或者他想要的,那么其他域名是不是用户想不想要的?浏览器不知道,所以浏览器不允许你在用户不知情的情况下偷偷请求别人家的东西过来

简单而言,为了安全

这个问题我简单说下吧,其实主要问题还是为了防止CSRF攻击(cookie泄漏的问题),如果不清楚的请自行百度

举个例子,马蓉平时去某个酒店开房,酒店有在线的管理系统,该管理系统地址叫 xxoo.hotels.com 然后她正常登录该酒店管理系统欣赏着自己跟宋喆开房的记录,这一切都很正常,然后xxoo.hotels.com给她都客户端cookie添加身份标识。
这时候卓伟出现了,他做了个网站叫 sliver.com. 然后向xxoo.hotels.com 发起了XHR请求,请求同时xxoo.hotels.com对应cookie也同时发送过去。xxoo.hotels.com验证用户标识无误,response中返回请求数据,这时候卓伟就可以看都很爽,自己看爽还不够,还会公布出去。马蓉虽然有罪,但是她和暴强都孩子是无辜的,孩子们的幼小心灵同时也受到了创伤。然后由于Ajax的后台执行,马蓉根本都没意识到这一行为,但是这一过程广大网友们就已经全部看到了。千万别举报我。

简单的说,你把Cookie托付给浏览器保存,浏览器要保证你的Cookie不被恶意网站利用。

如果可以不授权跨域的话,我在本地一直请求某个登入页面就有很大的可能完成暴力破解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题