浏览器同源策略

54 阅读2分钟

1.同源策略

浏览器出于安全考虑,对同源请求放行,对异源请求限制,这些限制规则被统称为同源策略,所造成的开发问题称为跨域问题。

离开浏览器没有跨域问题

2.同源

协议、域名、端口全部一致

3.同源限制

对标签元素轻微限制:img、script、video等等

对Ajax请求严格限制:浏览器可以正常发出请求,服务器可以正常响应请求,但是响应的结果需要浏览器校验,校验不通过则造成跨域问题

4.cors

cors是一套机制,用于浏览器校验跨域请求

服务器明确表示允许,则校验通过

服务器没有明确拒绝或者没有表示,则校验不通过

cors将请求分为两类:

(1)简单请求

请求方法:get、head、post

请求头满足cors安全规范:一般不修改请求头就可以

请求头content-type:text/plain、multipart/form-data、application/x-www-form-urlencoded(其中之一)

处理方法:浏览器自动携带请求头属性origin:请求源(http://www.xxx.com),服务器返回响应头属性Access-control-allow-origin:请求源/*,表示同意跨域请求

(2)预检请求

除了简单请求都是预检请求

处理方法:先发送options请求,携带请求头属性origin、access-control-request-method、access-control-request-headers,服务器返回Access-control-allow-origin、access-control-request-method、access-control-request-headers的值和预检请求头里的一致,表示同意跨域请求,然后再以简单请求的方式发送请求

5.jsonp

使用标签script请求跨域资源

//创建script元素,添加src请求源
<script src="请求源"/>
// 声明回调函数
function callback(res){
    console.log(res)
    }
// 服务器返回的数据中直接调用callback并传递参数就可以拿到数据
callback(data)