Atom
HTTP 307 Temporary Redirect

HTTP 307 Temporary Redirect

本篇文章與將外網網址指向內網環境這篇可以一起閱讀。

HTTP 307 是一種 3xx 類狀態碼(Redirection Class),代表伺服器要求用戶端前往另一個位置取得資源
完整名稱為:

307 Temporary Redirect – 暫時重新導向


技術定義

當伺服器希望將請求暫時導向另一個 URI 時使用此回應。
用戶端應使用相同的 HTTP 方法(例如 POST 不可改成 GET),並重新送出請求到 Location 標頭指定的 URI。

範例

1
2
HTTP/1.1 307 Temporary Redirect
Location: https://secure.example.com/login

這表示:

伺服器暫時把 /login 請求導向另一個網址;

用戶端必須原封不動地重送同樣的請求(包括方法與 body)。

  • 與 301、302、308 的差別
狀態碼 說明 是否改變請求方法 永久性
301 永久重導 可能改成 GET 永久
302 暫時重導(舊規範) 可能改成 GET 暫時
307 暫時重導(新規範) 保留原方法 暫時
308 永久重導(新規範) 保留原方法 永久

換句話說,307 是不改變請求內容的 302

實務中常見的 307 案例

  1. HTTPS 強制導向

許多網站會用 307 來強制 HTTP 請求改走 HTTPS:

1
2
HTTP/1.1 307 Temporary Redirect
Location: https://example.com/

這樣能保留使用者的原始請求方法(例如表單 POST),而不會被轉成 GET。

  1. 負載平衡或反向代理

部分企業會讓負載平衡器或 WAF 在系統維護時回應 307,
把流量臨時導向到備援伺服器:

1
Location: https://backup.example.net/

但這樣在使用者來說有可能會出現重導向過多而無法連線的狀態。

  1. OAuth / SSO 登入流程

SSO(單一登入)或 OAuth 授權過程中,常會看到連續的 302、307、308,
例如:

1
2
3
/login → 307 → /sso/auth

/sso/auth → 307 → /callback

這些導向不是錯誤,而是驗證流程的一部分。

  1. 惡意重導或釣魚

有些攻擊者會利用 307 來隱藏跳轉:
攻擊者控制一個中繼站回應 307;
將使用者導向惡意網站;

因為方法不變、參數保留,容易誘導到假登入頁面。

這在釣魚攻擊惡意流量分析中曾被觀察到,例如:
某些惡意廣告平台會使用 307 階段性轉導;
駭客利用 Cloudflare Worker 模擬合法導向鏈。

307 在資安上的應用與風險

應用情境 可能風險
HTTPS 強制導向 若實作錯誤可能導致明文流量短暫外洩
負載平衡轉導 攻擊者可偽造 307 導向惡意主機
OAuth 驗證流程 攻擊者可竄改 redirect_uri 造成Open Redirect漏洞
臨時維護轉址 若未設存取控管,可能意外暴露內部位址

曾出現 307 的實際事件

案例 1:GitHub Pages HTTPS 轉導問題

早期 GitHub Pages(2020 年前)在 HTTP → HTTPS 轉導時使用 307。
部分舊版瀏覽器誤判導向無限循環,造成頁面載入錯誤。
這個問題後來改為使用 301/302 處理。

案例 2:Google OAuth Redirect 漏洞(CVE-2020-26882)

研究人員發現某些 OAuth 實作使用 307 回傳導向時,
若未妥善驗證 redirect_uri,
攻擊者能利用這個暫時導向將授權碼外洩到第三方網站。
雖然這不是 307 本身的漏洞,但導向機制是觸發點。

案例 3:Cloudflare Workers Redirect Chain

安全研究人員在分析 Cloudflare Worker 的 URL rewrite 行為時,
觀察到攻擊者利用 307 與 308 組合製造「多層跳轉鏈」,
用來繞過惡意網域偵測系統。
這是現代釣魚網站常見的隱蔽技巧。

307 是「暫時重導且不改變請求方法」的狀態碼。
常見於 HTTPS 強制轉導、代理轉址、SSO/OAuth 流程中。
並非錯誤,但要留意是否為惡意導向或配置錯誤。
在弱掃中若遇到 307,可透過 Custom Host 或手動追蹤最終導向,確保掃描內容正確。

本文作者:Atom
本文鏈接:https://d0ngd.github.io/2025/10/27/HTTP 307 Temporary Redirect/
版權聲明:本文採用 CC BY-NC-SA 3.0 CN 協議進行許可