CORS:了解跨域请求的“预检”请求
跨源资源共享 (CORS) 在制作 HTTP 时带来了挑战跨域请求。为了解决这些限制,引入了预检请求作为解决方法。
预检请求解释
预检请求是先于实际请求(例如 GET 或 POST)的 OPTIONS 请求)并用于与服务器协商请求的权限。这些请求包括两个附加标头:
-
Access-Control-Request-Method: 指定实际请求的方法。
-
Access-Control -Request-Headers: 列出将包含在实际请求中的标头。
配置服务器响应
要处理预检请求,服务器必须使用以下标头进行响应:
-
Access-Control-Allow-Origin: 向请求中指定的源授予权限。
-
Access-Control-Allow-Methods: 指定实际请求允许的方法。
-
Access-Control-Allow-Headers: 列出允许浏览器访问的标头发送实际请求。
客户端预检实施
为了使预检请求成功,客户端必须包含以下修改:
-
发送 OPTIONS 请求:在实际请求之前,发送带有适当 Access-Control-Request-* 标头的 OPTIONS 请求。
-
包含必要的内容headers: 确保实际请求包含 Access-Control-Allow-Headers 响应标头中指定的所有标头。
示例:
考虑 POST 请求的预检请求,以从远程 URL 获取数据。
预检请求:
- 来源:https://yourdomain.com
- 访问控制请求方法:POST
- 访问控制请求标头:X-自定义标头
服务器响应(假设 POST和 X-Custom-Header 是允许的):
- Access-Control-Allow-Origin:https://yourdomain.com
- Access-Control-Allow-Methods :POST
- 访问控制允许标头:X-自定义标头
实际请求:
- 来源: https://yourdomain.com
- 方法:POST
- X-Custom-Header: value
通过执行以下步骤,您可以有效地预检 HTTP 请求使用 CORS 克服跨域限制。
以上是跨域场景下CORS何时使用预检请求?的详细内容。更多信息请关注PHP中文网其他相关文章!