前言
最近在本機 ASP.NET 專案的 web.config 中加入 HSTS 的設定,
在 Chrome 上測試起來會自動將原本的 http 轉到 https。
結果開啟其他的 Local 專案全都會自動轉導到 https 。
要怎麼取消 Chrome 自動將 localhost 的 http 轉 https 呢?
實作
ASP.NET 在 web.config 設定 HSTS 的方式,要設定 Http 的 Strict-Transport-Security Header 外,
還要設定 rewrite ,詳細可以參考 How to enable HTTP Strict Transport Security (HSTS) in IIS7+。
只是裡面的設定值要從 max-age=31536000 改成 max-age=31536000; includeSubDomains , Checkmarx 才會掃過。
那要如何才能取消 Chrome 自動將 http 轉 https 呢?
1.在 URL 上輸入 chrome://net-internals/#hsts
2.在 Query HSTS/PKP domain 的 Domain 文字框中輸入 localhost ,再按下 Query 鈕,就可以查到將 localhost 連 http 時,是否會被自動轉成 https ,像下圖就是有查到設定 HSTS
3.因為有查到資料,所以自動轉 https 應該是因為 HSTS 的關係,到頁面最下方,在 Delete domain security policies 的 Domain 文字框中輸入 localhost ,再按下 Delete 鈕 就可以以了哦!
註: 會測試 HSTS 是因為,在 Checkmarx V.8.9 版本中,如果 Web.Config 有這樣設定,就不會出的 Missing_HSTS_Header 的問題。
但在 Checkmarx V.9.2 版時,如果專案中有 Startup Class 時,不會去檢查 Web.Config 的設定,而直接去看 Startup 中有無在程式碼中設定 HSTS
參考資源
How to enable HTTP Strict Transport Security (HSTS) in IIS7+