OPTIONS
请求是 HTTP 协议中的一种请求方法,主要用于以下两个目的:
-
获取服务器支持的 HTTP 请求方法 :客户端可以通过发送
OPTIONS
请求来询问服务器支持哪些 HTTP 方法(如 GET、POST、PUT 等)。 -
进行跨域请求的预检(Preflight Request) :当客户端需要发起跨域请求时,特别是那些可能改变服务器资源状态的非简单请求(如带有自定义请求头的 POST 请求),浏览器会自动先发送一个
OPTIONS
请求来进行预检。这个预检请求用于确认服务器是否允许该跨域请求,并了解服务器允许的请求头和方法。
预检请求会包含以下头部信息:
-
Origin
:指示请求的来源域。 -
Access-Control-Request-Method
:声明实际请求将要使用的 HTTP 方法。 -
Access-Control-Request-Headers
:声明实际请求中包含的自定义请求头(如果有的话)。
服务器收到预检请求后,会在响应头中返回以下信息:
-
Access-Control-Allow-Origin
:指定哪些源(域名)被允许访问资源。 -
Access-Control-Allow-Methods
:列出服务器支持的所有 HTTP 方法。 -
Access-Control-Allow-Headers
:列出服务器允许的所有自定义请求头。 -
Access-Control-Allow-Credentials
:指示是否允许发送 Cookie 等认证信息。
如果服务器接受预检请求,浏览器将继续发起实际的跨域请求。否则,浏览器将阻止该请求,并在控制台中显示跨域错误。
需要注意的是,OPTIONS
请求是由浏览器自动发起的,后端服务器不需要对此做任何特殊处理。它是 CORS(跨域资源共享)机制的一部分,用于确保跨域请求的安全性