加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

跨域请求的另一个解:CORS

发布时间:2020-12-15 00:03:41 所属栏目:C语言 来源:网络整理
导读:CORS简介 CORS是跨源资源分享(Cross-Origin Resource Sharing)的缩写。它是W3C标准,是跨源AJAX请求的根本解决方法。相比JSONP只能发GET请求,CORS允许任何类型的请求。 浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple

CORS简介

CORS是跨源资源分享(Cross-Origin Resource Sharing)的缩写。它是W3C标准,是跨源AJAX请求的根本解决方法。相比JSONP只能发GET请求,CORS允许任何类型的请求。
浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。

CORS使用方法

CORS通信过程,都是浏览器自动完成,不需要改动前端代码。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息(Origin,Access-Control-Request-Method,Access-Control-Request-Headers),对于复杂请求会先进行一次预检请求,然后再正常请求。服务端收到请求后响应头中增加Access-Control-Allow-Origin字段,浏览器判断当前域名属于被允许的范围时则正常处理。

简单请求-基本流程

对于简单请求,浏览器直接发出CORS请求。具体来说,就是在头信息之中,增加一个Origin字段。浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段。
如果Origin指定的源,不在许可范围内,服务器会返回一个正常的HTTP回应。浏览器发现,这个回应的头信息没有包含Access-Control-Allow-Origin字段,就知道出错了,从而抛出一个错误,被XMLHttpRequest的onerror回调函数捕获。注意,这种错误无法通过状态码识别,因为HTTP回应的状态码有可能是200。
如果Origin指定的域名在许可范围内,服务器返回的响应,会多出几个以access-Control开头的字段:

Access-Control-Allow-Origin: http://api.bob.com
Access-Control-Allow-Credentials: true
**其他不定**

想要请求中携带cookie,需要对xhr设置withCredentials属性为true。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读