濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 在Golang中使用http.FileServer返回靜態(tài)文件的操作

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

熱門標(biāo)簽:官渡電銷外呼管理系統(tǒng)怎么收費(fèi) 400開頭電話怎樣申請 赤峰電銷 谷歌美發(fā)店地圖標(biāo)注 杭州人工智能電銷機(jī)器人費(fèi)用 江蘇呼叫中心外呼系統(tǒng)有效果嗎 貴州電話智能外呼系統(tǒng) 利用地圖標(biāo)注位置 地圖區(qū)域圖標(biāo)注后導(dǎo)出

Golang中使用http.FileServer

使用http.FileServer可以管理向?yàn)g覽器返回靜態(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);
}

補(bǔ)充:golang https server分析

https:

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

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

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

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

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

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

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

在建立tlsConn連接后,服務(wù)端新起一個(gè)goroutine處理,

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

設(shè)置服務(wù)器證書

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) // 生成服務(wù)端摘要信息
c.writeRecord(recordTypeHandshake, helloDone.marshal()) //發(fā)送helloDone信息
preMasterSecret, err := keyAgreement.processClientKeyExchange(config, hs.cert, ckx, c.vers) // 處理獲取由客戶端生成的第三個(gè)隨機(jī)數(shù)
hs.masterSecret = masterFromPreMasterSecret(c.vers, hs.suite, preMasterSecret, hs.clientHello.random, hs.hello.random) // 生成通信秘鑰
hs.finishedHash.Write() // 服務(wù)端發(fā)送最后一次確認(rèn)請求

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

您可能感興趣的文章:
  • [Asp.Net Core]用Blazor Server Side實(shí)現(xiàn)圖片驗(yàn)證碼
  • [Asp.Net Core] 淺談Blazor Server Side
  • Ant Design Blazor 組件庫的路由復(fù)用多標(biāo)簽頁功能
  • HTTP中header頭部信息詳解
  • Golang簡單實(shí)現(xiàn)http的server端和client端
  • IOS利用CocoaHttpServer搭建手機(jī)本地服務(wù)器
  • Golang實(shí)現(xiàn)http server提供壓縮文件下載功能
  • 基于http.server搭建局域網(wǎng)服務(wù)器過程解析
  • golang的httpserver優(yōu)雅重啟方法詳解
  • Blazor Server 應(yīng)用程序中進(jìn)行 HTTP 請求

標(biāo)簽:黔西 保定 河池 泰安 武漢 鷹潭 松原 宜春

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在Golang中使用http.FileServer返回靜態(tài)文件的操作》,本文關(guān)鍵詞  在,Golang,中,使用,http.FileServer,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在Golang中使用http.FileServer返回靜態(tài)文件的操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于在Golang中使用http.FileServer返回靜態(tài)文件的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    东源县| 铁力市| 广西| 东平县| 蒙山县| 彭山县| 望江县| 买车| 濮阳市| 乳源| 启东市| 宝鸡市| 崇礼县| 阳信县| 赤城县| 镇雄县| 富平县| 综艺| 古交市| 荔浦县| 阿坝县| 潍坊市| 阿图什市| 井研县| 旺苍县| 宣汉县| 平原县| 胶南市| 新干县| 贞丰县| 太康县| 庄河市| 奇台县| 巴东县| 舒兰市| 金秀| 蓝田县| 双辽市| 林西县| 平乡县| 龙州县|