您好,登錄后才能下訂單哦!
這篇文章主要介紹了前端http與https有哪些區別的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇前端http與https有哪些區別文章都會有所收獲,下面我們一起來看看吧。
現今大部分的網站都已經使用了 https 協議,這樣我們在網絡上進行沖浪時,基本也就無需擔心自己的隱私被竊取了。不過,稍微了解一點計算機網絡知識的人都明白,http 默認是 80 端口,https 默認是 443 端口。但是現在在網頁輸入網址訪問的人, 大部分都不會加 http://
,因此默認訪問的是 http
協議,那么為什么大家還能繼續訪問 https
協議呢?因為這些網站都做了一個跳轉,訪問 80 端口會被自動重定向到 443 端口(即 http -> https
)。
讓我們來看一個,日常生活中使用最廣泛的網站的例子吧!
注意到了嗎?我并沒有輸入協議,所以瀏覽器默認是會訪問 http 網站的,但是最終的結果是訪問了 https 網站。我前面說了這是做了跳轉,但是這種說法是很模糊的,你并不知道實際上是使用了什么技術?作為一個有點技術追求的人,讓我們來一探究竟吧!
或者你可以先猜測一下:這里使用的技術是 請求轉發 Request Forward 還是 重定向 Redirect 呢?
直接上瀏覽器調試,這樣最清楚了。可以看到這里會有兩個 www.baidu.com,直接看第一個前面問題的答案就已經出來了,是重定向 Redirect。
注意,下面這樣訪問是錯誤的。 如果你調試的話,你也只能看到一個 www.baidu.com 的網站。因為之前訪問過了,瀏覽器會記住你訪問過的網址的,這里的區別在于匹配到網址后,出現了百度的 logo 圖標。所以,如果你想要真實的看到這種跳轉,你需要清空自己的瀏覽器瀏覽器歷史記錄(關于百度的瀏覽器歷史記錄)。
既然已經了解了前面的內容,那么我們就可以把這個方式給簡單的應用上了。這里大致的思路是:監聽兩個端口,一個是端口提供 http 服務(只有一個根路徑),一個提供 https 服務(正常的應用服務路徑),然后如果有人訪問了 http 的根路徑,那么將其轉發到 https 服務的根路徑上即可。
網上有很多訪問生成自簽名的 CA 證書,這里就不多做介紹了,那么接下來直接看代碼吧!
package main import ( "log" "net/http" ) var ( CertFile = "C:/Users/alfred/Desktop/ssl/server.cer" KeyFile = "C:/Users/alfred/Desktop/ssl/server.key" ) func main() { go ListenHttp() go ListenHttps() select {} } func ListenHttp() { // 監聽 http 端口,并把請求重定向到 https 端口 httpServer := http.NewServeMux() httpServer.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Printf("http --> https") http.Redirect(w, r, "https://localhost:10000", http.StatusPermanentRedirect) }) err := http.ListenAndServe(":9999", httpServer) if err != nil { log.Fatal(err) } } func ListenHttps() { // 監聽 https 端口,提供實際的服務 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Welcome to SSL World!")) }) http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello Https World!")) }) // 本機自簽名證書,僅演示使用 err := http.ListenAndServeTLS(":10000", CertFile, KeyFile, nil) if err != nil { log.Fatal(err) } }
因為是自簽名證書,不是正統 CA 機構簽發的,所以這里是有警告的。不過這與我們所有說明的過程無關,忽視就好了。這是一個很小的細節問題,其實理解它挺簡單的,只需要一點點計算機網絡的知識就足夠了。
關于“前端http與https有哪些區別”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“前端http與https有哪些區別”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。