前端跨域 OPTIONS 请求

1. 检测服务器所支持的请求方法

可以使用 OPTIONS 方法对服务器发起请求,响应报文包含一个 Allow 首部字段,该字段的值表明了服务器支持的所有 HTTP 方法

2. CORS 中的预检请求

CORS(跨域资源共享) 中,可以使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。预检请求报文中的 Access-Control-Request-Method 首部字段告知服务器实际请求所使用的 HTTP 方法;Access-Control-Request-Headers 首部字段告知服务器实际请求所携带的自定义首部字段。服务器基于从预检请求获得的信息来判断,是否接受接下来的实际请求。

3. 简单请求与复杂请求

某些请求不会触发 CORS 预检请求。我们称这样的请求为“简单请求”。若请求满足所有下述条件,则该请求可视为“简单请求”:

  • 使用下列方法之一:
    • GET
    • HEAD
    • POST
  • Fetch 规范定义了对 CORS 安全的首部字段集合(Headers),不得人为设置该集合之外的其他首部字段。该集合为:
    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type (需要注意额外的限制)
  • Content-Type 的值仅限于下列三者之一:
    • text/plain
    • multipart/form-data
    • application/x-www-form-urlencoded

可以简单的理解,简单请求以外的请求就是复杂请求。

请注意,复杂请求会发出OPTIONS预检请求,并只携带设置的headers字段,而不会携带这些字段具体的值。因此服务器获取不到headers字段的值,应该先通过这次请求,才能接收到真实的请求。

此外,真实的请求依然需要服务器配置相关的跨域设置。

 

原文地址:https://www.cnblogs.com/diyichen/p/11593191.html