目录
1、浏览器的同源策略
浏览器为了确保资源安全,而遵循的一种策略。
1.1 源
源 = 协议 + 域名 + 端口号
1.2 同源与非同源
1.3 同源请求与非同源请求
所处源与目标源不一致,就是非同源,又称异源或跨域
2、跨域受到的限制
例如:源A和源B,它们是非同源,则浏览器会有如下限制
- DOM访问限制:源A的脚本不能读取和操作源B的DOM
- Cookie访问限制:源A不能访问源B的cookie
- Ajax响应数据限制:源A可以给源B发请求,但是无法获取源B的响应的数据
备注:在上述限制中,浏览器对Ajax获取数据的限制是影响最大的一个,且实际开发中经常遇到
3、注意点
- 跨域限制仅存在浏览器端,服务端不存在跨域限制
- 即使跨域了,Ajax请求也可以正常发出,但响应数据不会交给开发者
- <link>、<script>、<img>....这些标签发出的请求也可能跨域,只不过浏览器对标签跨域不做严格限制,对开发几乎无影响
4、CORS解决Ajax跨域问题
4.1 CORS概述
CORS全称:Cross-Origin Resource Sharing(跨域资源共享),是用于控制浏览器校验跨域请求的一套规范,服务器依照CORS规范,添加特定响应头来控制浏览器校验,规则如下:
- 服务器明确表示拒绝跨域请求,或没有表示,则浏览器校验不通过
- 服务器明确表示允许跨域请求,则浏览器校验通过
备注:使用CORS解决跨域是最正统的方式,且要求服务器是“自己人”
<