HTTPS -> HTTP 引起的 307 狀態碼與HSTS

1.應用場景

主要用于了解HSTS, 以及如何合理設置, 如正式服和測試服, 開發環境;

摘要:當HTTPS網站返回307狀態碼臨時重定向到HTTP時,會帶來安全風險(如中間人攻擊和混合內容問題)。

HSTS機制通過強制HTTPS通信可解決此問題,但若與307重定向沖突會導致連接中斷。

建議檢查服務器配置,避免HTTPS到HTTP的重定向,并合理設置HSTS參數(如max-age和preload)。

調試時可使用Chrome DevTools和SSL測試工具,Nginx示例配置展示了如何強制HTTPS和啟用HSTS。

2.學習/操作

1.文檔閱讀

HTTPS -> HTTP 引起的 307 狀態碼與 HSTS – Charles Feng
What is the HTTP 307 Temporary Redirect Status Code - Kinsta?

chrome://net-internals/#hsts

2.整理輸出

當用戶通過 HTTPS 訪問網站時,服務器可能會返回 307 狀態碼,臨時重定向到 HTTP 協議。

307 狀態碼表示請求的資源暫時移動到另一個 URL,且客戶端應繼續使用原始請求方法(如 POST)訪問新地址。

這種重定向通常由服務器配置錯誤或后端邏輯引起,例如強制降級到 HTTP 或未正確處理 HTTPS 請求。

此行為存在安全隱患:

  • 中間人攻擊風險:降級到 HTTP 后,傳輸數據可能被竊聽或篡改。
  • 混合內容問題:若頁面通過 HTTPS 加載但部分資源(如腳本、圖片)通過 HTTP 傳輸,瀏覽器可能攔截這些資源,導致功能異常。

HSTS 機制的作用

HSTS(HTTP Strict Transport Security 「HTTP嚴格傳輸安全」) 是一種安全策略機制,通過響應頭 Strict-Transport-Security 強制瀏覽器僅通過 HTTPS 與網站通信。關鍵特性包括:

  • 自動轉換 HTTP 鏈接為 HTTPS:瀏覽器在訪問網站時,即使輸入 http:// 也會自動跳轉到 https://
  • 阻止無效證書警告繞過:用戶無法手動忽略證書錯誤繼續訪問。
  • 預加載列表:網站可申請加入瀏覽器內置的 HSTS 預加載列表,首次訪問即啟用 HTTPS。

HSTS 響應頭示例:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

307 狀態碼與 HSTS 的沖突

若網站啟用了 HSTS 但服務器返回 307 重定向到 HTTP,瀏覽器會根據 HSTS 策略拒絕重定向并終止連接。此時可能出現以下情況:

  • 控制臺報錯:瀏覽器顯示 HTTP Strict Transport Security 攔截警告。
  • 用戶無法訪問:頁面加載失敗,尤其當 HSTS 包含 includeSubDomainspreload 時。

解決方案

避免 HTTPS 到 HTTP 的重定向

  • 檢查服務器配置(如 Nginx、Apache),確保所有重定向目標使用 HTTPS。
  • 更新后端代碼邏輯,避免手動構造 HTTP 鏈接。

合理配置 HSTS

  • 設置較長的 max-age(如 1 年)并逐步增加。
  • 測試無誤后添加 includeSubDomainspreload 指令。
  • 通過 HSTS 預加載提交入口 申請加入瀏覽器預加載列表。

調試工具推薦

  • 使用 Chrome DevTools 的 Network 面板檢查重定向鏈。
  • 通過 SSL Labs 測試 HSTS 配置。

代碼示例:Nginx 強制 HTTPS 配置

server {listen 80;server_name example.com;return 301 https://$host$request_uri;
}server {listen 443 ssl;server_name example.com;# HSTS 配置add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}

測試服/開發服?-?解決 HTTPS 降級到 HTTP 引起的 307 狀態碼與 HSTS 問題

以下為開發環境中的解決方案:


禁用瀏覽器的 HSTS 強制策略

在 Chrome 地址欄輸入 chrome://net-internals/#hsts,進入 HSTS 管理頁面。
Delete domain security policies 中輸入目標域名(如 localhost 或開發域名),點擊刪除。
重啟瀏覽器后,HSTS 策略將被臨時移除。


清理瀏覽器緩存與 Cookie

強制刷新頁面(Ctrl + Shift + RCmd + Shift + R)。
清除瀏覽器緩存和 Cookie,避免舊策略殘留影響測試。


開發環境配置全 HTTPS

使用自簽名證書或工具(如 mkcert)為本地開發環境啟用 HTTPS:

# 安裝 mkcert(示例為 macOS)
brew install mkcert
mkcert -install
mkcert localhost 127.0.0.1 ::1

配置開發服務器(如 Node.js 的 https 模塊或 Webpack 的 devServer.https)加載生成的證書。


修改后端重定向邏輯

確保后端代碼不主動從 HTTPS 重定向到 HTTP。例如在 Express 中:

app.use((req, res, next) => {if (req.protocol === 'http') {res.redirect(301, `https://${req.headers.host}${req.url}`);} else {next();}
});

臨時禁用 HSTS 響應頭

檢查后端是否返回 Strict-Transport-Security 頭,開發環境可注釋或移除該配置。
例如 Nginx 中:

# 注釋以下行
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

使用無痕模式或不同瀏覽器測試

無痕模式(Incognito)默認不加載部分擴展和緩存,可避免 HSTS 干擾。
嘗試使用未訪問過生產環境的瀏覽器(如 Firefox 或 Safari)進行測試。


檢查代理或中間件配置

確保開發工具(如 Webpack DevServer)未錯誤修改請求協議。
配置代理時顯式指定目標協議:

devServer: {proxy: {'/api': {target: 'https://localhost:3000',secure: false // 僅開發環境允許自簽名證書}}
}

驗證網絡層配置

檢查本地 hosts 文件是否綁定正確域名,避免 DNS 解析問題。
確保測試域名未出現在瀏覽器預加載的 HSTS 列表中(如 preload 列表)。

后續補充

...

3.問題/補充

TBD

后續補充

...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95324.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PortSwigger靶場之DOM XSS in document.write sink using source location.search通關秘籍

一、靶場描述這個靶場在搜索查詢的跟蹤功能中,包含一個基于DOM的跨站腳本(DOM-based XSS)漏洞。該漏洞的產生是因為網站使用了一個名為 document.write 的 JavaScript 函數,這個函數會把數據直接寫入到頁面中。而寫入的數據來源于…

深度學習篇---Pytorch常用優化器

優化器介紹:在 PyTorch 中,優化器(Optimizer)的作用是根據模型參數的梯度來更新參數,以最小化損失函數。下面用通俗易懂的方式介紹幾種常用的優化器:1. SGD(隨機梯度下降)最基礎的優…

0903 C++類的運算符重載、靜態成員與繼承

Part 1.梳理思維導圖一.運算符重載1.運算符重載的作用使原本只能對基本數據類型生效的運算符&#xff0c;在重載后&#xff0c;滿足可以對構造類型數據生效。2.關系運算符重載a.關系運算符種類> > < < !b.分析參數表達式…

Cloudflare安全規則實用指南:從路徑攔截到IP限制的10個經典范例

前言&#xff1a;在Cloudflare的安全防護體系中&#xff0c;自定義規則是抵御特定威脅的“精準武器”。除了基礎的路徑攔截&#xff0c;日常運維中還有許多高頻場景需要針對性配置。本文將通過10個實用范例&#xff0c;帶你掌握Cloudflare規則的靈活用法&#xff0c;覆蓋路徑防…

數據結構(時空復雜度)

目錄 一、算法復雜度 二、時間復雜度 1.不同時間度代碼舉例 三、空間復雜度 一、算法復雜度 算法復雜度&#xff08;評估算法優劣一個重要指標&#xff09;分為時間復雜度和空間復雜度。 時間復雜度是指執行算法所需要的計算工作量&#xff0c;而空間復雜度是指執行這個…

ESXI8多網卡鏈路聚合

1. 背景 測試服務器只有千兆網卡&#xff0c;增加上行帶寬&#xff0c;使用兩塊網卡做鏈路聚合。 2. 環境 VM ESXI 8.0 華為交換機 S5735S 3. 交換機配置 負載均衡方式采用了src-dst-ipTrunk模式采用了手工負載分擔&#xff08;測試了靜態LACP&#xff0c;未成功&#xff09;4.…

從“人工驅動”到“AI協同”:良策金寶AI如何助力設計院數智化躍遷?

在“雙碳”目標驅動下&#xff0c;電力工程項目的數量與復雜度持續攀升。設計院面臨“項目多、周期短、人力緊”的三重壓力&#xff0c;傳統的“人工驅動”模式已難以為繼。良策金寶AI&#xff0c;正是這場變革的核心引擎。它以AI驅動數智化服務&#xff0c;為工程設計企業提供…

vue3 vite 自適應方案

兩種方案&#xff1a; 1 使用 postcss-pxtorem插件 npm install postcss-pxtorem autoprefixer --save-dev # 或 yarn add postcss-pxtorem autoprefixer -D 2、postcss-px-to-viewport npm install postcss-px-to-viewport --save-dev 或 yarn add postcss-px-to-viewport -D …

華為研發投資與管理實踐(IPD)讀書筆記

在全球科技產業競爭日趨激烈的背景下&#xff0c;企業研發管理早已告別 “依賴個體經驗、靠運氣突破” 的粗放時代&#xff0c;如何將研發創新從 “偶然成功” 轉化為 “可復制、可持續的必然成果”&#xff0c;成為所有追求長期競爭力的企業必須破解的命題。華為&#xff0c;作…

【LeetCode_283】移動零

刷爆LeetCode系列LeetCode第283題&#xff1a;github地址前言題目描述題目與思路分析代碼實現算法代碼優化LeetCode第283題&#xff1a; github地址 有夢想的電信狗 前言 本文用C實現 LeetCode 第283題 題目描述 題目鏈接&#xff1a;https://leetcode.cn/problems/move-z…

一文弄懂C/C++不定參數底層原理

目錄 一、C語言的可變參數&#xff1a;基于棧幀的手動讀取 &#xff08;1&#xff09;C函數調用的棧幀結構 &#xff08;2&#xff09;C 可變參數的 4 個核心宏&#xff1a;如何 “手動讀棧” &#xff08;3&#xff09;實戰代碼&#xff1a;用 C 可變參數實現求和函數 &a…

【Android】【設計模式】抽象工廠模式改造彈窗組件必知必會

寫一個 Android 版本的抽象工廠彈窗 Manager 管理器&#xff0c;使用 DialogFragment 實現&#xff0c;這樣能更貼近真實的開發場景。結構設計 抽象產品&#xff1a;BaseDialogFragment&#xff08;繼承 DialogFragment&#xff09;具體產品&#xff1a;LoginDialogFragment, …

Win64OpenSSL-3_5_2.exe【安裝步驟】

官網下載 注意&#xff1a;科學上網&#xff0c;可以加速下載速度&#xff01; Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 下載后得到&#xff1a;Win64OpenSSL-3_5_2.exe 雙擊安裝 修改安裝路徑&#xff1a; 默認就選擇第一個。 重要提醒?…

華為云云原生架構賦能:大騰智能加速業務創新步伐

巨大的渦輪、細小的螺絲&#xff0c;一臺航天飛機發動機的三維模型呈現在屏幕上&#xff0c;遠程同事同步協作&#xff0c;一臺復雜設備在工程師高效的協同中不斷完善。深圳市大騰信息技術有限公司&#xff0c;正是這場工業變革的推動者之一。大騰智能以“云原生工業”的融合為…

基于https+域名的Frp內網穿透教程(Linux+Nginx反向代理)

系列文章目錄 基于http公網ip的Frp內網穿透教程(win server) 基于http域名的Frp內網穿透教程(win serverIIS反向代理) 基于http公網ip的Frp內網穿透教程(Linux) 基于https域名的Frp內網穿透教程(LinuxNginx反向代理) 目錄 系列文章目錄 前言 一、Frp是什么&#xff1f; 1. …

裸機程序(1)

一、裸機裸機是一個在計算機硬件與軟件開發領域高頻出現的概念&#xff0c;核心定義是 “未安裝操作系統&#xff08;OS&#xff09;&#xff0c;僅包含硬件本身&#xff08;或僅運行最底層硬件驅動 / 控制程序&#xff09;的設備”。在電腦中&#xff0c;裸機會映射代碼到cpu&…

95%企業AI失敗?揭秘LangGraph+OceanBase融合數據層如何破局!?

本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型應用開發學習視頻及資料&#xff0c;盡在聚客AI學院。不知道你們有沒有遇到過&#xff0c;在我們一些實際落地的AI項目中&#xff0c;雖然前期“Demo 很驚艷&#xff0c;但上線后卻無人問津”。你們有沒有想…

樹莓集團產教融合:數字學院踐行職業教育“實體化運營”要求

在職業教育改革不斷深化的背景下&#xff0c;“實體化運營” 成為推動職業教育高質量發展的重要方向。樹莓集團積極響應這一要求&#xff0c;以產教融合為核心&#xff0c;打造數字學院&#xff0c;切實踐行職業教育 “實體化運營”&#xff0c;為培養高素質數字領域專業人才探…

ELK 統一日志分析系統部署與實踐指南(上)

#作者&#xff1a;張桐瑞 文章目錄1 ELK 技術棧概述1.1ELK 核心組件詳解1.2 ELK 工作流程2 ELK部署2.1 環境描述2.1.7 配置es集群下篇&#xff1a;《ELK 統一日志分析系統部署與實踐指南&#xff08;下&#xff09;》 鏈接: [https://blog.csdn.net/qq_40477248/article/detail…

上位機知識篇---poweshellcmd

要理解 PowerShell 和 CMD 的區別&#xff0c;我們可以先打個通俗的比方&#xff1a;CMD 像老式功能機&#xff0c;只能干打電話、發短信這些 “基礎活”&#xff1b;而 PowerShell 像智能手機&#xff0c;不僅能做基礎操作&#xff0c;還能裝 APP、玩復雜功能&#xff0c;甚至…