前端CORS

##CORS
一、cors三个响应头部:
1. Access-Control-Allow-Origin: <origin> | *
其中origin 参数制定了 `允许访问该资源的外域URL`
例如,下面的字段值只允许来自 'http://itcast.cn'的请求,`*标识通配符`,任何网站都可访问

2.Access-Control-Allow-Headers
默认情况下,CORS仅支持客服端向服务器发送以下9个请求头:
Accept, Accept-Language, Content-Language, DPR, Downlink, Save-Data, View-Width, Width, Content-Type
其中Content-Type`仅`限于`text/plain, multipart/form-data, application/x-www-form-urlencoded` 三者之一。
如果需要加入`额外请求头信息`,须在`服务器端`,通过Access-Control-Allow-Headers`对额外请求头进行声明`,否则请求会失败。
例如:如果要加一个请求头为 Content-Type: X-Custom-Header 则需要在服务器端声明
res.setHeader('Access-Control-Allow-Headers','Content-Type, X-Custom-Header')

3.Access-Control-Allow-Methods
默认情况下,CORS`仅`支持客户端发起`GET, POST, HEAD`请求。
如果客户端希望通过`PUT, DELETE`等方法请求服务器资源,则需要在服务器端,通过Access-Control-Allow-Methods来`指明实际请求所允许使用的HTTP方法`。

二、cors请求的分类:
1.简单请求:
满足一下条件的都为简单请求:
1.1 请求方式为GET,POST,HEAD三者之一的
1.2 HTTP头部信息不超过一下几种字段:`无自定义头部字段`,且在9个请求头之内,Accept,Accept-Language,Content-Language,DPR,Downlink,Save-Data,Viewport-Width,Width,Content-Type(只有text/plain, multipart/form-data, application/x-www-form-urlencoded)

2.预检请求:
满足以下条件的都属于预检请求:
2.1 请求方式在GET,POST,HEAD三者之外的
2.2 HTTP头部信息包含自定义头部字段
2.3 向服务器发送了 application/json 格式数据的
在浏览器与服务器通信之前,浏览器`会先发送OPTION请求进行预检,以获知服务器是否允许改实际请求`,`服务器成功响应预检请求之后,客户端才会发送真正的请求,并携带真实数据`。

 

posted @ 2022-03-20 18:43  grigeorge  阅读(325)  评论(0编辑  收藏  举报