前端POST请求服务端接口时,为什么需要执行两次?
第一次:
General
Request Method:OPTIONS Status Code:204 No ContentResponse Headers
Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:access-control-allow-methods,authorization,content-type Access-Control-Allow-Methods:GET,HEAD,PUT,POST,DELETE,PATCH Access-Control-Allow-Origin:https://xxxxxxxxx.com Date:Mon, 18 Dec 2023 09:24:21 GMT Strict-Transport-Security:max-age=15724800; includeSubDomains Vary:Origin
作用:
1、复杂请求
请求中有自定义HTTP头部,所谓的自定义头部,在实际的项目里,我们经常会遇到需要在header头部加上一些token或者其他的用户信息,用来做用户信息的校验。
只要是带自定义header的跨域请求,在发送真实请求前都会先发送OPTIONS请求,浏览器根据OPTIONS请求返回的结果来决定是否继续发送真实的请求进行跨域资源访问。所以复杂请求肯定会两次请求服务端。
2、发生了跨域。
在跨域请求中,浏览器为了确保安全,会首先发送一个OPTIONS请求,也被称为预检请求。如果预检请求成功,浏览器才会发出实际的POST请求。
options请求有什么作用:
官方将头部带自定义信息的请求方式称为带预检(preflighted)的跨域请求。在实际调用接口之前,会首先发出一个options请求,检测服务端是否支持真实的请求进行跨域的请求。
标签:Control,请求,自定义,两次,Access,POST,跨域 From: https://www.cnblogs.com/use-D/p/17897355.html