problem:为什么会有options请求

为了安全考虑,浏览器对资源访问有同源限制的问题,也就是web应用程序只能访问和它同一协议同一域名同一端口的web应用程序上的资源。

通过跨域资源共享机制可以让资源在浏览器中访问与该资源本身不同域的资源,资源会发起一个跨域的http请求。

浏览器发送options请求是一种cors预检测的行为,主要用来获取服务器支持的http请求方法和检查服务器的性能。

 什么情况下浏览器会发送options请求?

   预检测请求出现在跨域http请求中的非简单请求之前。

 什么是简单请求?什么是非简单请求?

  区别简单请求和非简单请求:请求方式、首部字段、content-type、xmlHttpRequestUpload有无注册任何事件监听、请求中有无使用ReadableStream

  简单请求:

   请求方式:get/head/post请求

   首部字段:只有Accept、Accept-Language、Content-Language、Content-Type等规范中定义的对cors安全对首部字段集合中的字段

   content-type:仅为text/plain、multipart/form-data、application/x-www-form-urlencoded

   xmlHttpRequestUpload没有注册了事件监听    

   没有使用ReadableStream

   非简单请求:

       和简单请求相反,非简单请求会发送预检请求,即在请求之前发一次options请求

   http系列之请求方法、http报文

   

参考资料:

MDN:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

https://cloud.tencent.com/developer/article/1046663

原文地址:https://www.cnblogs.com/yy95/p/9925354.html