91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

前端http與https有哪些區別

發布時間:2023-05-09 14:42:02 來源:億速云 閱讀:92 作者:zzz 欄目:開發技術

這篇文章主要介紹了前端http與https有哪些區別的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇前端http與https有哪些區別文章都會有所收獲,下面我們一起來看看吧。

從 http 到 https

現今大部分的網站都已經使用了 https 協議,這樣我們在網絡上進行沖浪時,基本也就無需擔心自己的隱私被竊取了。不過,稍微了解一點計算機網絡知識的人都明白,http 默認是 80 端口,https 默認是 443 端口。但是現在在網頁輸入網址訪問的人, 大部分都不會加 http://,因此默認訪問的是 http 協議,那么為什么大家還能繼續訪問 https 協議呢?因為這些網站都做了一個跳轉,訪問 80 端口會被自動重定向到 443 端口(即 http -> https)。

讓我們來看一個,日常生活中使用最廣泛的網站的例子吧!

前端http與https有哪些區別

注意到了嗎?我并沒有輸入協議,所以瀏覽器默認是會訪問 http 網站的,但是最終的結果是訪問了 https 網站。我前面說了這是做了跳轉,但是這種說法是很模糊的,你并不知道實際上是使用了什么技術?作為一個有點技術追求的人,讓我們來一探究竟吧!
或者你可以先猜測一下:這里使用的技術是 請求轉發 Request Forward 還是 重定向 Redirect 呢?

瀏覽器調試

直接上瀏覽器調試,這樣最清楚了。可以看到這里會有兩個 www.baidu.com,直接看第一個前面問題的答案就已經出來了,是重定向 Redirect

前端http與https有哪些區別

前端http與https有哪些區別

注意,下面這樣訪問是錯誤的。 如果你調試的話,你也只能看到一個 www.baidu.com 的網站。因為之前訪問過了,瀏覽器會記住你訪問過的網址的,這里的區別在于匹配到網址后,出現了百度的 logo 圖標。所以,如果你想要真實的看到這種跳轉,你需要清空自己的瀏覽器瀏覽器歷史記錄(關于百度的瀏覽器歷史記錄)。

前端http與https有哪些區別

實現自己的 http 到 https 的重定向

既然已經了解了前面的內容,那么我們就可以把這個方式給簡單的應用上了。這里大致的思路是:監聽兩個端口,一個是端口提供 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)
	}
}

前端http與https有哪些區別

因為是自簽名證書,不是正統 CA 機構簽發的,所以這里是有警告的。不過這與我們所有說明的過程無關,忽視就好了。這是一個很小的細節問題,其實理解它挺簡單的,只需要一點點計算機網絡的知識就足夠了。

關于“前端http與https有哪些區別”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“前端http與https有哪些區別”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大化| 邢台市| 昭觉县| 绥芬河市| 体育| 阳山县| 重庆市| 南宫市| 东兰县| 体育| 崇义县| 白银市| 崇州市| 天祝| 泰来县| 额尔古纳市| 义马市| 富蕴县| 岑巩县| 石屏县| 六盘水市| 平塘县| 攀枝花市| 眉山市| 葵青区| 饶河县| 灌云县| 大渡口区| 岗巴县| 乌什县| 勃利县| 温宿县| 北票市| 乌拉特前旗| 平湖市| 肇州县| 伊金霍洛旗| 河北区| 陇南市| 客服| 抚顺县|