1.简介
CORS,跨域资源共享,需要浏览器和服务器同时支持,基本思想为使用自定义的HTTP头部让浏览器和服务器通信
2.分类
浏览器将CORS分为两类:
- 简单请求
HEAD,GET,POST,
HTTP头部信息不超出几个字段 - 非简单请求
- HEAD请求
只请求页面的首部,可以判断一个资源是否存在
3.简单请求
浏览器直接发出CORS请求,在头信息中添加一个Origin字段,用来说明请求来自哪个源,服务器根据这个值,决定是否同意这次请求
- 如果服务器不许可,则返回的信息中不会包含Access-Control-Allow-Origin字段,这个错误需要onerror捕获,返回的状态码可能为200
- 如果服务器许可,则服务器返回的响应中会多出Access-Control-字段
- CORS默认不发送cookie,需要发送cookies,则需要服务器指定Access-Control-Allow-Credentials字段,需要在ajax请求中打开withCredentials属性
4.非简单请求
请求方法是PUT或DELETE,Content-Type字段类型是application/json
会在正式通信前,增加一次OPTIONS查询请求,预检请求
询问服务器,网页所在域名是否在服务器的许可名单中,以及可以使用那些HTTP动词和头信息字段,只有得到肯定答复,浏览器才会发出正式XMLHTTPRequest请求,否则会报错
服务器通过预检请求,以后每次浏览器正常CORS请求,都会和简单请求一样,会有一个Origin字段,服务器的回应也会有yieldAccess-Control-Allow-Origin头信息字段