瀏覽器強制跳轉 HTTPS 網址怎麼辦?

前言

身為一名工程師在開發時,往往很長使用 localhost 或是 127.0.0.1,但是有時候我們會發生一些很奇怪的狀況,例如瀏覽器一直強迫你走 https 那麼這一篇就來紀錄一下如何解決。

問題原因

以下我「不太建議隨便嘗試」,避免很難處理

首先你可以先試著在瀏覽器上輸入 https://localhost/ 或是開發常用的 https://localhost:8080 等,接下來你應該會看到 「localhost 拒絕連線。」並且下面有一段錯誤訊息是「ERR_CONNECTION_REFUSED」,如果是 ERR_CONNECTION_REFUSED 的錯誤訊息倒是還好,因為有可能只是你的伺服器沒有開啟而已。

但如果你是使用 vue ui 等 GUI 本地端開發管理介面的話,就有可能出現「這個網站無法提供安全連線」以及錯誤碼「ERR_SSL_PROTOCOL_ERROR」,這個就是 https 在搞鬼導致的,接下來你不管怎麼輸入非 https 的 http://localhost/ 你會發現永遠都是進入到 「這個網站無法提供安全連線」

這個網站無法提供安全連線

這種狀況主要是出在瀏覽器的 HTTP Strict Transport Security,簡單來講只要你曾經訪問過 https 的網站,那麼它之後就會記憶在 https,因為 HTTP Strict Transport Security 又稱之為「HTTP強制安全傳輸技術」,因此 localhost 或是 127.0.0.1 也是有可能發生的唷

Chrome

首先開啟瀏覽器,並在網址列輸入 chrome://net-internals/#hsts,接下來下方有一個選項是「Delete domain security policies」,然後在底下輸入框輸入你要清除 https 的網域

Delete domain security policies

當你按下 「Delete」 之後你會發現好像什麼事情都沒發生一樣,這時候你再去輸入「http://localhost/」你就會發現可以進入囉。

如果你不確定你的瀏覽器到底有沒有亂記憶 https 的話,可以透過「Query HSTS/PKP domain」來查詢也可以

Google

Microsoft Edge

而身為包著 Chrome 核心的 Microsoft Edge 處理方式也很雷同,但瀏覽器上輸入稍微不太一樣,在 Chrome 是輸入 chrome://net-internals/#hsts,可是在 Microsoft Edge 是輸入 edge://net-internals/#hsts 唷。

Firefox

Firefox 的流程就直接刪除歷史資料就可以了,詳細可以看這一篇文章。

參考文獻