HTTP 307
HTTP回應狀態碼 来自维基百科,自由的百科全书
307 Temporary Redirect是HTTP協議中的一個狀態碼(Status Code)。可以理解為一個臨時的重定向[1]。
引入
雖然RFC 1945和RFC 2068規範不允許客戶端在重定向時改變請求的方法,但是很多現存的瀏覽器在收到302響應時,直接使用GET方式訪問在Location頭部中規定的URI,而無視原先請求的方法。[3]
因此,狀態碼307被添加了進來,用以明確服務器期待客戶端進行何種反應。[4]
特徵
根據RFC 2616定義:
- 響應實體必須帶有一個HTTP Location頭部來指示新地址。
- 如果一個客戶端有鏈接編輯能力,其應當把所有的引用鏈接重定向到新的URL上。
- 除非帶有Cache-Control或Expires頭部,否則該響應不能被緩存。
- 除非請求方法是HEAD,否則響應實體應該包含一個小型的超文本,標註一個超鏈接到新的URL。
- 如果是除了GET和HEAD之外的請求方法,客戶端必須在重定向之前詢問用戶。
示例
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重定向的方式:
<?php
header("HTTP/1.1 307 Temporary Redirect");
header("Location: http://example.com/newpage.html");
exit();
?>
用途
- 該響應碼也常用於客戶端發出PUT請求,但非上傳具體文件時,服務器向客戶端返回確認用的文本消息。[2]
參見
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.