跨域问题

跨域CORS

1.

Cors:跨域资源共享:Cross-origin resource  sharing

它允许浏览器向跨源服务器,发出XMLHttpRequest,从而克服了AJAX只能同源使用的限制。

2.

Cors需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10

整个cors通信过程,都是浏览器自动完成的,不需要用户参与,对于开发者,cors通信与同源的AJAX通信没有差别,代码完全一样,浏览器一旦发现AJAX请求跨域,就会自动添加一些附加的头信息,有时还会多出一次附加请求,用户不会有感觉。

因此,实现cors通信的关键是服务器,只要实现了CORS接口,就可以实现跨源通信。

3.

两种请求:

浏览器将cors请求分为两大类:简单请求,非简单请求。

满足以下条件为简单请求:

(1).请求方法为以下之一:

Head  get  post

(2).http的头信息不超出以下几种字段:

Accept

Accept-language

Content-language

Last-Event-ID

Content-Type只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

其余不满足的为非简单请求。

浏览器对于两种请求的处理不一样

4.

基本流程

(1)  简单请求

浏览器直接发出CORS请求,具体说,就是在头信息中添加一个Origin字段。

例子:

浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息中,添加Origin字段。

GET /cors HTTP/1.1

Origin: http://api.bob.com

Host: api.alice.com

Accept-Language: en-US

Connection: keep-alive

User-Agent: Mozilla/5.0...

 

(2).非简单请求

非简单请求的cors请求,会在正式通信之前,增加一次HTTP查询请求,称为“预检”请求。

博客地址:

http://www.ruanyifeng.com/blog/2016/04/cors.html

 

posted on 2017-12-22 14:33  LastDance  阅读(112)  评论(0编辑  收藏  举报

导航