aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/glossary/preflight_request/index.html
blob: fcb8cd10280f14588c6db3813dbd0e94f68f4dcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
---
title: Preflight request
slug: Glossary/Preflight_request
translation_of: Glossary/Preflight_request
---
<p> </p>

<p>一个 CORS 预检请求是用于检查服务器是否支持 {{Glossary("CORS")}} 即跨域资源共享。</p>

<p>它一般是用了以下几个 HTTP 请求首部的 {{HTTPMethod("OPTIONS")}} 请求:{{HTTPHeader("Access-Control-Request-Method")}} 和 {{HTTPHeader("Access-Control-Request-Headers")}},以及一个 {{HTTPHeader("Origin")}} 首部。</p>

<p>当有必要的时候,浏览器会自动发出一个预检请求;所以在正常情况下,前端开发者不需要自己去发这样的请求。</p>

<p>举个例子,一个客户端可能会在实际发送一个 <code>DELETE</code> 请求之前,先向服务器发起一个预检请求,用于询问是否可以向服务器发起一个 {{HTTPMethod("DELETE")}} 请求:</p>

<pre>OPTIONS /resource/foo
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://foo.bar.org
</pre>

<p>如果服务器允许,那么服务器就会响应这个预检请求。并且其响应首部 {{HTTPHeader("Access-Control-Allow-Methods")}} 会将 <code>DELETE</code> 包含在其中:</p>

<pre>HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400</pre>

<h2 id="参见">参见</h2>

<ul>
 <li><a href="/en-US/docs/Glossary/CORS">CORS</a></li>
 <li>{{HTTPMethod("OPTIONS")}}</li>
</ul>