日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

http 和 https_Golang设置https访问,以及http如何重定向到https

發(fā)布時間:2025/3/12 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 http 和 https_Golang设置https访问,以及http如何重定向到https 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

設(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") } }() ...}

變?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") } }() ...}

其中ListenAndServeTLS方法的兩個參數(shù)為SSL證書的下載文件,網(wǎng)上有專門生成證書的命令或工具,這種情況得到的證書,雖然可以訪問https,但證書無效,瀏覽器地址欄提示不安全。

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

新用戶在騰訊云花1塊錢買了個域名,自帶SSL證書,域名審核通過后,申請免費(fèi)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") } }() //監(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") } }() ...}

如果http監(jiān)聽80端口,https監(jiān)聽443端口,兩個端口都可隱藏,重定向時地址欄不會顯示端口變化。

微信公眾號:李田路口

總結(jié)

以上是生活随笔為你收集整理的http 和 https_Golang设置https访问,以及http如何重定向到https的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。