blob: 0025be78afc33fccc8e0257680e257cc98d08d08 (
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
---
title: 307 Temporary Redirect
slug: Web/HTTP/Status/307
tags:
- HTTP
- 参考
- 响应状态码
- 状态码
- 重定向
translation_of: Web/HTTP/Status/307
---
<div>{{HTTPSidebar}}</div>
<p>{{Glossary("HTTP")}} <code><strong>307 Temporary Redirect</strong></code>,临时重定向响应状态码,表示请求的资源暂时地被移动到了响应的 {{HTTPHeader("Location")}} 首部所指向的 URL 上。</p>
<p>原始请求中的请求方法和消息主体会在重定向请求中被重用。在确实需要将重定向请求的方法转换为 {{HTTPMethod("GET")}} 的场景下,可以考虑使用 {{HTTPStatus("303", "303 See Other")}} 状态码。例如,在使用 {{HTTPMethod("PUT")}} 方法进行文件上传操作时,如果需要返回一条确认信息(例如“你已经成功上传了 XYZ”),而不是返回上传的资源本身,就可以使用这个状态码。</p>
<p>状态码 <code>307</code> 与 {{HTTPStatus("302")}} 之间的唯一区别在于,当发送重定向请求的时候,<code>307</code> 状态码可以确保请求方法和消息主体不会发生变化。如果使用 <code>302</code> 响应状态码,一些旧客户端会错误地将请求方法转换为 {{HTTPMethod("GET")}}:也就是说,在 Web 中,如果使用了 <code>GET</code> 以外的请求方法,且返回了 <code>302</code> 状态码,则重定向后的请求方法是不可预测的;但如果使用 <code>307</code> 状态码,之后的请求方法就是可预测的。对于 <code>GET</code> 请求来说,两种情况没有区别。</p>
<h2 id="状态码">状态码</h2>
<pre class="syntaxbox">307 Temporary Redirect
</pre>
<h2 id="规范">规范</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">规范</th>
<th scope="col">标题</th>
</tr>
<tr>
<td>{{RFC("7231", "307 Temporary Redirect" , "6.4.7")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("http.status.307")}}</p>
<h2 id="参见">参见</h2>
<ul>
<li>{{HTTPStatus("302", "302 Found")}}, the equivalent of this status code, but that may change the method used when it is not a {{HTTPMethod("GET")}}.</li>
<li>{{HTTPStatus("303", "303 See Other")}}, a temporary redirect that changes the method used to {{HTTPMethod("GET")}}.</li>
<li>{{HTTPStatus("301", "301 Moved Permanently")}}, a permanent redirect</li>
</ul>
|