CORS实现原理

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头信息字段



作者:星月西
链接:https://www.jianshu.com/p/af02bc9c1b2b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章