初始代碼為http監(jiān)聽:

func main() { server := &http.Server{ Addr: ":8080", ... } go func() { if err := server.ListenAndServe(); err != nil && err != http.Err" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 建站知識 > Golang設(shè)置https訪問,以及http如何重定向到https

Golang設(shè)置https訪問,以及http如何重定向到https

時間:2023-02-09 08:48:01 | 來源:建站知識

時間:2023-02-09 08:48:01 來源:建站知識

設(shè)置https訪問:

初始代碼為http監(jiān)聽:

func main() { server := &http.Server{ Addr: ":8080", ... } go func() { if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() ...}變?yōu)閔ttps監(jiān)聽:

func main() { server := &http.Server{ Addr: ":8080", ... } go func() { if err := server.ListenAndServeTLS("conf/server.crt", "conf/server.key"); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() ...}其中ListenAndServeTLS方法的兩個參數(shù)為SSL證書的下載文件,網(wǎng)上有專門生成證書的命令或工具,這種情況得到的證書,雖然可以訪問https,但證書無效,瀏覽器地址欄提示不安全。

騰訊云可以免費申請SSL證書,但需要對填寫的域名進(jìn)行驗證,如果不是騰訊云的域名,還需要去域名對應(yīng)解析商進(jìn)行驗證,所以最好使騰訊云的域名。

新用戶在騰訊云花1塊錢買了個域名,自帶SSL證書,域名審核通過后,申請免費SSL證書,填寫該域名,選擇自動DNS驗證,驗證通過后,即可下載證書。從下載內(nèi)容Apache文件夾中取出一個.crt文件和.key文件存放本地,作為server.ListenAndServeTLS()函數(shù)的兩個參數(shù),參數(shù)傳文件路徑即可。

此時啟動項目,訪問:https://localhost:8080 可行,訪問:http://localhost:8080 不可行。

https訪問,提示不安全,證書無效:

如圖:

這種情況,只需把ip替換成證書對應(yīng)的域名即可,前提是域名已經(jīng)和你的服務(wù)器ip進(jìn)行了解析。這里我用剛申請的域名和我本地電腦ip進(jìn)行了解析,用域名進(jìn)行訪問后,顯示正常,不再提示不安全:

http重定向到https:

此處結(jié)合Gin框架處理,http重定向到https,用到第三方包:

go get github.com/unrolled/secure利用secure包寫一個中間件,設(shè)置http重定向到https具體哪個url上:

//設(shè)置http重定向到httpsfunc TlsHandler() gin.HandlerFunc { return func(c *gin.Context) { secureMiddleware := secure.New(secure.Options{ SSLRedirect: true, SSLHost: "dubinyang.xyz:8081", }) err := secureMiddleware.Process(c.Writer, c.Request) if err != nil { return } c.Next() }}main函數(shù)里同時監(jiān)聽http和https:

func main() { g:= gin.Default() //加載中間件 g.Use(TlsHandler()) server := &http.Server{ Addr: ":8080", ... } //監(jiān)聽http go func() { if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() //監(jiān)聽https go func() { //端口不可重復(fù)監(jiān)聽 //此處更換8080端口為8081,直接用gin的RunTLS()函數(shù)進(jìn)行監(jiān)聽 //繼續(xù)用server的ListenAndServeTLS()函數(shù)效果一樣,建server2,Addr變?yōu)闉?#34;:8081"即可 if err := g.RunTLS(":8081", "conf/server.crt", "conf/server.key"); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() ...}如果http監(jiān)聽80端口,https監(jiān)聽443端口,兩個端口都可隱藏,重定向時地址欄不會顯示端口變化。

公眾號:李田路口



關(guān)鍵詞:設(shè)置,訪問

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉