欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Golang中使用http.FileServer返回靜態(tài)文件的操作

 更新時間:2020年12月18日 10:13:52   作者:寒江雪1719  
這篇文章主要介紹了在Golang中使用http.FileServer返回靜態(tài)文件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

Golang中使用http.FileServer

使用http.FileServer可以管理向瀏覽器返回靜態(tài)文件

http.Handle("/",http.FileServer(http.Dir("/Users/administrator/Desktop/public")))
err := http.ListenAndServe("0.0.0.0:8080",nil)
if err!=nil{
  fmt.Print(err);
}

補充:golang https server分析

https:

HTTPS是http安全版本的實現(xiàn),在http與tcp之間加了一層ssl/tls安全傳輸協(xié)議

為了防止請求被監(jiān)聽、篡改、冒充,在tls實現(xiàn)過程中引入了數(shù)字證書機制,數(shù)字證書由第三方權威機構(gòu)提供保證。

數(shù)字證書原理是采用非對稱加密生成一對公鑰、私鑰,服務端保存私鑰,下發(fā)公鑰給客戶端,由于非對稱加密計算量比較大,

所以https通信過程中,通過客戶端與服務端的握手交互產(chǎn)生三次隨機碼,從而生成一個相對安全的對稱加密密碼,密碼通過非對稱加密下發(fā)給客戶端,從而完成加密通信

https本質(zhì)上還是tcp通信,所以https的捂手是在建立tcp連接后,進行的一系列校驗而已,

在處理tcp conn連接的過程中,會判斷連接類型是不是tls類型,如果是會進入tlsConn.serverHandshake()握手過程。詳細流程如下:

下面分析一下golang中如何實現(xiàn)的https握手

在建立tlsConn連接后,服務端新起一個goroutine處理,

config.serverInitOnce.Do(config.serverInit) // 產(chǎn)生一個隨機數(shù)作為通信憑證,下次通信時憑證校驗通過后直接通信,校驗不通過重新建立連接
msg, err := c.readHandshake() // 解析clientHello信息,此時獲取到由客戶端生成的第一個隨機數(shù)
c.vers, ok = config.mutualVersion(hs.clientHello.vers) // 檢查客戶端與服務端tls版本是否一致
_, err = io.ReadFull(config.rand(), hs.hello.random) // 服務端產(chǎn)生第二個隨機數(shù)
hs.setCipherSuite(id, supportedList, c.vers) // 確認加密算法

設置服務器證書

hs.cert, err = config.getCertificate(&ClientHelloInfo{
CipherSuites: hs.clientHello.cipherSuites,
ServerName: hs.clientHello.serverName,
SupportedCurves: hs.clientHello.supportedCurves,
SupportedPoints: hs.clientHello.supportedPoints,
});
skx, err := keyAgreement.generateServerKeyExchange(config, hs.cert, hs.clientHello, hs.hello) // 生成服務端摘要信息
c.writeRecord(recordTypeHandshake, helloDone.marshal()) //發(fā)送helloDone信息
preMasterSecret, err := keyAgreement.processClientKeyExchange(config, hs.cert, ckx, c.vers) // 處理獲取由客戶端生成的第三個隨機數(shù)
hs.masterSecret = masterFromPreMasterSecret(c.vers, hs.suite, preMasterSecret, hs.clientHello.random, hs.hello.random) // 生成通信秘鑰
hs.finishedHash.Write() // 服務端發(fā)送最后一次確認請求

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • Golang 使用gorm添加數(shù)據(jù)庫排他鎖,for update

    Golang 使用gorm添加數(shù)據(jù)庫排他鎖,for update

    這篇文章主要介紹了Golang 使用gorm添加數(shù)據(jù)庫排他鎖,for update,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang 限流器的使用和實現(xiàn)示例

    Golang 限流器的使用和實現(xiàn)示例

    這篇文章主要介紹了Golang 限流器的使用和實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Golang實現(xiàn)按行讀取文件的方法小結(jié)

    Golang實現(xiàn)按行讀取文件的方法小結(jié)

    按行讀取文件相較于一次性載入,有著很多優(yōu)勢,如內(nèi)存效率高、處理速度快、實時性高等,本文主要介紹了Golang按行讀取文件的相關方法,希望對大家有所幫助
    2024-02-02
  • golang 后臺進程的啟動和停止操作

    golang 后臺進程的啟動和停止操作

    這篇文章主要介紹了golang 后臺進程的啟動和停止操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 總結(jié)Go語言中defer的使用和注意要點

    總結(jié)Go語言中defer的使用和注意要點

    Go語言中的defer關鍵字實現(xiàn)比較特殊的功能,這篇文章給大家總結(jié)了關于Go語言中defer的使用和注意要點,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • golang實踐-第三方包為私有庫的配置方案

    golang實踐-第三方包為私有庫的配置方案

    這篇文章主要介紹了golang實踐-第三方包為私有庫的配置方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go?gRPC教程實現(xiàn)Simple?RPC

    Go?gRPC教程實現(xiàn)Simple?RPC

    這篇文章主要為大家介紹了Go?gRPC教程實現(xiàn)Simple?RPC示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Go語言接口的用法詳解

    Go語言接口的用法詳解

    本文詳細講解了Go語言接口的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • golang interface判斷為空nil的實現(xiàn)代碼

    golang interface判斷為空nil的實現(xiàn)代碼

    這篇文章主要介紹了golang interface判斷為空nil的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • go?logger不侵入業(yè)務代碼使用slog替換zap并實現(xiàn)callerSkip詳解

    go?logger不侵入業(yè)務代碼使用slog替換zap并實現(xiàn)callerSkip詳解

    這篇文章主要為大家介紹了go?logger不侵入業(yè)務代碼使用slog替換zap并實現(xiàn)callerSkip詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09

最新評論