📜  HTTP 标头 |访问控制请求方法(1)

📅  最后修改于: 2023-12-03 15:15:45.090000             🧑  作者: Mango

HTTP 标头 | 访问控制请求方法

简介

在使用 HTTP 协议进行通信时,客户端发起的请求需要通过 HTTP 标头(header)来传递相关的信息,包括访问控制请求方法(Access-Control-Request-Method)。

访问控制请求方法用于指示服务器,预检请求(Preflight Request)所使用的 HTTP 方法。预检请求是指在跨域请求中,先发起一个 OPTIONS 请求,来确定实际请求是否可以被允许。在 OPTIONS 请求中,会包含一个访问控制请求方法的头字段,用于告诉服务器实际请求所使用的方法。

使用方式

在发起预检请求时,需要在请求头中添加类似下面的内容:

OPTIONS /api HTTP/1.1
Host: www.example.com
Access-Control-Request-Method: POST

其中,Access-Control-Request-Method 的值为实际请求所使用的方法,比如 POST。

服务器在收到这个请求后,会通过检验 Origin、Access-Control-Request-Method 等字段,来确认该请求是否可以被允许。如果检验通过,服务器会返回类似下面的响应:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept

其中,Access-Control-Allow-Methods 列出了该服务器允许的 HTTP 方法。

注意事项
  • 在跨域请求中,如果需要使用实际的 HTTP 请求方法,必须先发起一个 OPTIONS 请求,进行预检。
  • 在预检请求中,必须包含 Access-Control-Request-Method 头字段,用于指示实际请求所使用的方法。
  • 服务器在响应预检请求时,必须设置 Access-Control-Allow-Methods 头字段,列出允许的 HTTP 方法。
  • Access-Control-Allow-Methods 的值可以为多个 HTTP 方法,用逗号分隔。
  • 如果 Access-Control-Allow-Methods 为空,表示该服务器不允许跨域请求。
总结

HTTP 标头中的访问控制请求方法,用于指示服务器预检请求所使用的 HTTP 方法。在跨域请求中,必须先进行预检,才能使用实际的 HTTP 请求方法。如果服务器允许实际请求,则需要设置 Access-Control-Allow-Methods 头字段,列出允许的 HTTP 方法。如有疑问可查看 MDN Web Docs

Markdown 代码:

# HTTP 标头 | 访问控制请求方法

## 简介

在使用 HTTP 协议进行通信时,客户端发起的请求需要通过 HTTP 标头(header)来传递相关的信息,包括访问控制请求方法(Access-Control-Request-Method)。

访问控制请求方法用于指示服务器,预检请求(Preflight Request)所使用的 HTTP 方法。预检请求是指在跨域请求中,先发起一个 OPTIONS 请求,来确定实际请求是否可以被允许。在 OPTIONS 请求中,会包含一个访问控制请求方法的头字段,用于告诉服务器实际请求所使用的方法。

## 使用方式

在发起预检请求时,需要在请求头中添加类似下面的内容:

OPTIONS /api HTTP/1.1 Host: www.example.com Access-Control-Request-Method: POST


其中,Access-Control-Request-Method 的值为实际请求所使用的方法,比如 POST。

服务器在收到这个请求后,会通过检验 Origin、Access-Control-Request-Method 等字段,来确认该请求是否可以被允许。如果检验通过,服务器会返回类似下面的响应:

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, DELETE Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept


其中,Access-Control-Allow-Methods 列出了该服务器允许的 HTTP 方法。

## 注意事项

- 在跨域请求中,如果需要使用实际的 HTTP 请求方法,必须先发起一个 OPTIONS 请求,进行预检。
- 在预检请求中,必须包含 Access-Control-Request-Method 头字段,用于指示实际请求所使用的方法。
- 服务器在响应预检请求时,必须设置 Access-Control-Allow-Methods 头字段,列出允许的 HTTP 方法。
- Access-Control-Allow-Methods 的值可以为多个 HTTP 方法,用逗号分隔。
- 如果 Access-Control-Allow-Methods 为空,表示该服务器不允许跨域请求。

## 总结

HTTP 标头中的访问控制请求方法,用于指示服务器预检请求所使用的 HTTP 方法。在跨域请求中,必须先进行预检,才能使用实际的 HTTP 请求方法。如果服务器允许实际请求,则需要设置 Access-Control-Allow-Methods 头字段,列出允许的 HTTP 方法。如有疑问可查看 [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods)。