AJAX跨域问题小结

什么是AJAX跨域?

AJAX 是无需刷新前端页面就能够从服务器取数据的一种方法,负责Ajax运作的核心对象是XMLHttpRequest(XHR)对象。

同源策略是对XHR的一个主要约束,它为通信设置了“相同的域、相同的端口、相同的协议”这一限制。

哪些请求属于跨域请求?

http://a.com/ 不允许访问 http://b.com(不同域)
http://a.com 不允许访问 https://a.com(同一域名,不同协议)
http://a.com 不允许访问 http://a.com:8080(同一域名,不同端口)
http://a.com 不允许访问 http://192.168.1.1(域名和域名对应的ip)
http://a.a.com 不允许访问 http://b.a.com(主域相同,子域不同)

为什么要禁止AJAX的跨域请求?

AJAX同源策略主要用来防止CSRF(Cross Site Request Forgery)攻击,攻击简单流程如下:
1. 用户登录了自己的银行页面http://MyBank.com, http://MyBank.com 向用户的cookie中添加用户标识
2. 用户浏览了恶意页面 http://Evil.com 执行了页面中的恶意AJAX请求代码向http://MyBank.com 发起AJAX HTTP请求,请求同时http://MyBank.com 对应cookie也同时发送过去
3. 银行页面从发送的cookie中提取用户标识,验证用户标识无误,response中返回请求数据。此时数据泄露。
4. 由于Ajax的后台执行,此时用户没有意识这一过程。

Reference

AJAX 跨域解决方案 - CORS
为什么要禁止跨域的 Ajax 请求?
浅谈CSRF

猜你喜欢

转载自blog.csdn.net/huochen1994/article/details/78210828