发送请求的时候, method = OPTIONS 是什么请求【热度: 717】

关键词:预检请求

当看到 method 为 OPTIONS 的请求时,这是一个 HTTP OPTIONS 请求。OPTIONS 请求是 HTTP/1.1 协议中定义的一种方法,用于获取目的资源(服务器)支持的通信选项。这种请求主要被用于 CORS(Cross-Origin Resource Sharing,跨域资源共享)预检请求,在真正的跨域请求被发送之前执行。

作用和目的

  • 确定服务器的支持性:客户端通过发送一个 OPTIONS 请求来确定服务器支持的 HTTP 方法(如 GET、POST、DELETE 等)。
  • CORS 预检请求:在发送实际的跨域请求前,浏览器会自动发出一个 OPTIONS 预检请求,询问目标资源的服务器是否允许该跨域请求。这个步骤用来确保安全,避免非法站点调用敏感资源。

CORS 预检请求内容

在 CORS 上下文中,OPTIONS 请求会包含一些 HTTP 头,指明了实际请求将会使用哪些 HTTP 方法和头部。服务器响应该请求时会指明允许的方法、头部和是否允许带有凭证的请求(如 Cookies)。重要的 HTTP 头包括:

  • Access-Control-Request-Method:在预检请求中,这个头部告诉服务器实际请求将使用的 HTTP 方法是什么。

  • Access-Control-Request-Headers:当实际请求中需要携带额外的头部时,这个字段会列出它们。

  • Access-Control-Allow-Methods:在响应中,这个头部告诉客户端服务器允许的方法。

  • Access-Control-Allow-Headers:在响应中,这个头部告诉客户端服务器允许的头部。

  • Access-Control-Allow-Origin:这个头部指明了哪些源可以访问该资源。如果服务器支持请求的源,则会在响应中包含这个头部。

示例

当您的 Web 应用尝试从另一个域名(源)的服务器获取资源时,浏览器会首先发起一个 OPTIONS 请求。例如,如果您的前端应用运行在 http://example.com 并尝试通过 AJAX 请求 http://api.example.com/data,浏览器会先发送 OPTIONS 请求到 http://api.example.com/data。服务器响应该请求后,如果允许此类请求,则浏览器会继续发起实际的 GET/POST/等请求;如果不允许,则停止请求。

总的来说,OPTIONS 请求是 HTTP 规范的一部分,它是 CORS 预检机制中非常重要的一步,用于在实际跨域请求发出之前确定通信的可能性和条件。