目录

一、什么是OPTIONS请求?二、简单请求、复杂请求三、特定的请求头、响应头

一、什么是OPTIONS请求?

OPTIONS 请求方式是 HTTP 协议中的一种,主要用于 从响应头中获取服务器支持的HTTP请求方式。

OPTIONS 请求方式是 浏览级行为,当请求存在跨域时,根据浏览器的同源策略,浏览器会对 ajax 请求发送 OPTIONS 请求进行预检查。一般只限制 ajax 请求,不会限制 link、img、script、iframe 请求。服务器后端之间的跨域请求时不用发 OPTIONS 请求的。

OPTIONS请求特性:

没有请求体;没有响应体;安全;幂等性;(同一个接口请求多少次都一样)不能缓存;不能在表单里面使用。

二、简单请求、复杂请求

某些请求不会触发 CORS 预检请求,这样的请求一般称为 简单请求,而会触发预检的请求则是 复杂请求。

简单请求:

(以下条件需全部满足)

请求方式: GET、HEAD、POST。 设置规范集合之内的首部字段,如:Accept、Accept-Language、Content-Language、Content-Type、DPR、Downlink、Save-Data、Viewport-Width、Width。 Conten-Type 的值仅限于下列三者之一,即:application/x-www-form-urlencoded、multipart/form-data、text/plain。 (注意:如果 GET、POST 请求使用了 Content-Type: application/json 、token类 的请求头,也会触发 OPTIONS 请求预检) 请求中的任意 XMLHttpRequestUpload 对象均没有注册任何事件监听器。 请求中没有使用 ReadableStream 对象。

复杂请求:

(以下条件满足任意一项)

请求方式:PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH。人为设置了简单请求之外的首部字段。Content-Type 的值不属于下列三者之一:application/x-www-form-urlencoded、multipart/form-data、text/plain。

三、特定的请求头、响应头

特定的请求头:

Access-Control-Request-Method:告知服务器,实际请求将使用的请求方式(如:GET、POST等)。 例如:Access-Control-Request-Method: GET Access-Control-Request-Headers:告知服务器,实际请求将携带的自定义请求首部字段。 例如:Access-Control-Request-Headers: token

特定的响应头:

Access-Control-Allow-Methods:允许客户端使用的请求方式。 例如:Access-Control-Allow-Methods: PUT Access-Control-Allow-Origin:允许跨域请求的域名,如果要允许所有域名则设置为 *。 例如:Access-Control-Allow-Origin: http://localhost:8080 Access-Control-Allow-Headers:允许请求携带的请求头。 例如:Access-Control-Allow-Headers: token, Origin Access-Control-Allow-Credentials:是否允许携带 cookie。 例如:Access-Control-Allow-Credentials: true Access-Control-Max-Age:指定了预检请求的结果能够被缓存多久,即多久发送一次OPTIONS请求。 例如:Access-Control-Max-Age: 60(1分钟内不再发 options 请求)

整理完毕,完结撒花~

参考地址:

1.什么是options请求?为什么会有options请求?https://blog.csdn.net/gwdgwd123/article/details/100554117

精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。