互聯(lián)網(wǎng)隱私一直是一個敏感話題。很多爆炸新聞或者香艷的丑聞,似乎就像病毒一樣每隔一段時間就爆發(fā)。這不僅是網(wǎng)民茶余飯后的談資調侃,也讓部分安全公司開始吵作。用戶在安全,隱私,cookie之類宣傳攻勢,不知所以。有的人認為cookie是泄露隱私的元兇。對于開發(fā)者,cookie的是web開發(fā)里程上的一大發(fā)明,cookie是小甜點,絕不是惡魔。但是,如果使用不當,小甜點發(fā)霉了一樣會有毒。
員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團隊的力量開發(fā)出優(yōu)質的產(chǎn)品。創(chuàng)新互聯(lián)堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供成都做網(wǎng)站、網(wǎng)站設計、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),小程序設計,軟件按需求定制網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務。
Cookie的誕生挺有意思。試想一下,當我們?nèi)ャy行辦業(yè)務的時候,銀行職員會提供一個卡號,待會較叫號的時候,拿著卡號給柜臺業(yè)務員。這樣簡單的一種”認證“,就是cookie的一種應用。
web開發(fā)免不了要和cookie打交道。go的http庫也提供了cookie的相關操作。
Name字段為cookie的名字,Value是其值,剩下的Path和Domain則是cookie的存儲的范圍。Expires是cookie的過期時間,如果不設置,那么這是一個session型的cookie,即瀏覽器會話有用,一旦關閉瀏覽器,cookie隨即會被刪除。
cookie是header一項內(nèi)容,因此可以使用reponse的Header方法設置cookie。
這里也可以測試驗證 Set和Add兩個方法的差別。當然,和文件上傳類似,go也提供了常用的工具函數(shù)。
http的SetCookie方法也可以設置cookie,就不需要關系Set和Add的先后順序了,當然第二個參數(shù)是一個Cookie的指針對象。設置了cookie,接下來就是需要讀cookie。
讀取cookie的方式也有很多,cookie封裝在header中,當然可以通過header方法處理。
不使用Header方法,也可以使用Request的方法:
訪問的時候可以發(fā)現(xiàn),r.Cookie返回了對于key的鍵值對,而r.Cookies則返回了所有cookie的key的鍵值對值。
cookie的作用很多,通常記錄客戶端的一些信息,用來做用戶的登錄驗證。現(xiàn)在我們需要使用cookie來做一個小特性---消息。通常web請求發(fā)出后,response返回數(shù)據(jù),也可以設置一些消息用來指引用戶。
setMessageHandler 函數(shù)很簡單,就是創(chuàng)建一個cookie實例,然后把消息寫入到cookie,然后再返回給客戶端。
getMessageHandler首先會讀取key為flash的cookie,如果沒讀到內(nèi)容,則表示消息不存在,否則就創(chuàng)建另外一個cookie,設置其過期時間這里等于清除cookie。然后把讀取出來的message返回給客戶端。完成消息通信。
我們討論了go中cookie的基本應用?,F(xiàn)在的web開發(fā)中,人們越來越重視網(wǎng)絡安全,因此cookie的安全也成為用戶關心的內(nèi)容。go原生的cookie封裝比較簡單。go的社區(qū)卻開發(fā)了很多輪子,實現(xiàn)了secure cookie,例如gorilla/securecookie庫。實際開發(fā)中,可能會借助一些三方的庫或包來完成功能。
cookie用來做認證需要跟用戶有交互,承載交互的當然是用戶界面。既然是關于用戶界面,學習go的模板技術就是順其自然之事。雖然現(xiàn)在前后端分離技術,傳統(tǒng)的模板技術已經(jīng)逐步被前端渲染取代了,但是對于一些同構項目,還是依賴部分服務端模板渲染。下一個話題再討論go的模板。
相關閱讀:
cookie wiki
全面解讀HTTP Cookie
哥們錯誤的 原因特多
告訴你一個有效的辦法:
=============================
插入斷點,然后按F11一句一句地調試!
Cookie由后端管理。
問題:第一次set cookie可以生效,第二次覆蓋或者清除cookie卻不生效。查看瀏覽器的cookie信息,仍然是第一次的值。
cookie := http.Cookie{
? ? ? ? ? ? Name:? ? name,
? ? ? ? ? ? Value:? ? value,
? ? ? ? ? ? HttpOnly: true,
? ? ? ? ? ? Secure:? false,
? ? ? ? ? ? Path:? ? "/",
? ? }
? ? http.SetCookie(resp, cookie)
原因:在第二次設置cookie,即清除cookie時,沒有設置Path
cookie := http.Cookie{
? ? ? ? ? ? Name:? name,
? ? ? ? ? ? MaxAge: -1,
? ? ? ? ? ? Expires: time.Unix(1, 0),
? ? }
? ? http.SetCookie(resp, cookie)
解決方案:
在清除Cookie時,添加Path,并且與第一次設置時的Path值一致。
本文名稱:go語言檢查cookie golang代碼檢查工具
網(wǎng)頁網(wǎng)址:http://sd-ha.com/article20/ddejhco.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、建站公司、網(wǎng)站設計、網(wǎng)站排名、網(wǎng)站營銷、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)