浏览器处于安全考虑,请求资源时将基于同源策略进行限制。而我们在实际开发中的大多数请求,都是跨域的。那么什么是同源策略?什么是跨域?我们要如何解决跨域的问题呢?
W3C为克服资源只能同源使用的限制,制定了CORS标准,即为“跨域资源共享”。
一、什么是同源策略
同源策略是由Netscape提出的一种浏览器安全策略,它保证了在没有明确授权的前提下,限制不同源之间的数据交换。所谓同源,指的是协议名、域名、端口号完全相同的源;有一个不同即为跨域。
二、CORS简介
CORS,即跨域资源共享,需要浏览器和服务器同时支持。目前包括IE10以上版本的所有的浏览器都支持CORS。
CORS对于用户而言是无感的,由浏览器自动完成。浏览器一旦发现跨域请求,就会自动添加某些头信息或者附加信息,通知服务器此次请求是跨域请求。服务器收到浏览器跨域资源请求后,发回响应,告知浏览器此次请求被接受与否和其他详细信息,一次跨域请求就完成了。
浏览器将CORS分为了两类:简单请求和非简单请求。
1、请求的分类
简单请求
满足以下条件的请求,属于简单请求
(1) 请求方法是以下三种方法之一:
HEAD
GET
POST
(2)HTTP的头信息不超出以下几种字段:
Accept
Accept-Language
Content-Language
Content-Type (需要注意额外的限制)
DPR
Downlink
Save-Data
Viewport-Width
Last-Event-ID
Content-Type只能是下列三个值之一:
application/x-www-form-urlencoded、multipart/form-data、
text/plain
非简单请求
不满足上述的请求,属于非简单请求。浏览器将使用不同的处理方法。
二、浏览器对不同请求的处理
1. 简单请求:
浏览器直接发出CORS请求。具体表现在,在请求头信息中增加一个Origin字段。Origin字段当中将说明本次请求来自哪