307 Temporary Redirect是HTTP协议中的一个状态码(Status Code)。可以理解为一个临时的重定向。
但该响应代码与302重定向有所区别的地方在于,收到307响应码后,客户端应保持请求方法不变向新的地址发出请求。
因此,状态码307被添加了进来,用以明确服务器期待客户端进行何种反应。
特征
根据[//tools.ietf.org/html/rfc2616#section-10.3.2 RFC 2616]定义:
- 响应实体必须带有一个HTTP Location头部来指示新地址。
- 如果一个客户端有链接编辑能力,其应当把所有的引用链接重定向到新的URL上。
- 除非带有Cache-Control或Expires头部,否则该响应不能被缓存。
- 除非请求方法是HEAD,否则响应实体应该包含一个小型的超文本,标注一个超链接到新的URL。
- 如果是除了GET和HEAD之外的请求方法,客户端必须在重定向之前询问用户。
示例
以GET方式请求
GET /index.php HTTP/1.1
Host: www.example.org
服务器回应:
HTTP/1.1 307 Temporary Redirect
Location: https://www.example.org/
服务器配置
这是一个例子,展示如何使用Nginx返回307重定向:
location /old/url/ {
return 307 /new/url;
}
这是使用PHP实现307重定向的方式:
用途
- 该响应码被用于Chrome,用来在本地对已经缓存的HSTS站点进行重定向。
- 该响应码也常用于客户端发出PUT请求,但非上传具体文件时,服务器向客户端返回确认用的文本消息。
参见
- HTTP
- HTTP狀態碼
- URL重寫
- HTTP 301
- HTTP 302
参考文献
外部連結
- [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html HTTP/1.1 Error codes in RFC 2616]
- RFC 1945 (HTTP 1.0)
- RFC 7231 (HTTP 1.1 的后续更新)
评论 (0)