這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在Golang中利用http.FileServer返回靜態(tài)文件,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
貢山網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。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是http安全版本的實(shí)現(xiàn),在http與tcp之間加了一層ssl/tls安全傳輸協(xié)議
為了防止請(qǐng)求被監(jiān)聽(tīng)、篡改、冒充,在tls實(shí)現(xiàn)過(guò)程中引入了數(shù)字證書(shū)機(jī)制,數(shù)字證書(shū)由第三方權(quán)威機(jī)構(gòu)提供保證。
數(shù)字證書(shū)原理是采用非對(duì)稱加密生成一對(duì)公鑰、私鑰,服務(wù)端保存私鑰,下發(fā)公鑰給客戶端,由于非對(duì)稱加密計(jì)算量比較大,
所以https通信過(guò)程中,通過(guò)客戶端與服務(wù)端的握手交互產(chǎn)生三次隨機(jī)碼,從而生成一個(gè)相對(duì)安全的對(duì)稱加密密碼,密碼通過(guò)非對(duì)稱加密下發(fā)給客戶端,從而完成加密通信
https本質(zhì)上還是tcp通信,所以https的捂手是在建立tcp連接后,進(jìn)行的一系列校驗(yàn)而已,
在處理tcp conn連接的過(guò)程中,會(huì)判斷連接類型是不是tls類型,如果是會(huì)進(jìn)入tlsConn.serverHandshake()握手過(guò)程。詳細(xì)流程如下:
下面分析一下golang中如何實(shí)現(xiàn)的https握手
在建立tlsConn連接后,服務(wù)端新起一個(gè)goroutine處理,
config.serverInitOnce.Do(config.serverInit) // 產(chǎn)生一個(gè)隨機(jī)數(shù)作為通信憑證,下次通信時(shí)憑證校驗(yàn)通過(guò)后直接通信,校驗(yàn)不通過(guò)重新建立連接 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ù)器證書(shū)
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)請(qǐng)求
上述就是小編為大家分享的怎么在Golang中利用http.FileServer返回靜態(tài)文件了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
新聞名稱:怎么在Golang中利用http.FileServer返回靜態(tài)文件-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://jinyejixie.com/article0/deceoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站導(dǎo)航、定制網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站改版、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容