HTTP 307

HTTP回應狀態碼 来自维基百科,自由的百科全书

HTTP 307

307 Temporary RedirectHTTP協定中的一個狀態碼(Status Code)。可以理解為一個臨時的重新導向[1]

但該回應代碼與302重新導向有所區別的地方在於,收到307回應碼後,客戶端應保持請求方法不變向新的位址發出請求。[2]

引入

雖然RFC 1945RFC 2068規範不允許客戶端在重新導向時改變請求的方法,但是很多現存的瀏覽器在收到302回應時,直接使用GET方式訪問在Location頭部中規定的URI,而無視原先請求的方法。[3]

因此,狀態碼307被添加了進來,用以明確伺服器期待客戶端進行何種反應。[4]

特徵

根據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重新導向的方式:

<?php
header("HTTP/1.1 307 Temporary Redirect");
header("Location: http://example.com/newpage.html");
exit();
?>


用途

  • 該回應碼被用於Chrome,用來在本地對已經快取的HSTS站點進行重新導向。[5]
  • 該回應碼也常用於客戶端發出PUT請求,但非上傳具體檔案時,伺服器向客戶端返回確認用的文字訊息。[2]

參見

參考文獻

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.