您好,登錄后才能下訂單哦!
本文實(shí)例講述了Go語(yǔ)言Cookie用法。分享給大家供大家參考,具體如下:
web 開發(fā)免不了要和 cookie 打交道。Go 的 http 庫(kù)也提供了 cookie 的相關(guān)操作。
Name 字段為 cookie 的名字,Value 是其值,剩下的 Path 和 Domain 則是 cookie 的存儲(chǔ)的范圍。Expires 是 cookie 的過期時(shí)間,如果不設(shè)置,那么這是一個(gè) session 型的 cookie,即瀏覽器會(huì)話有用,一旦關(guān)閉瀏覽器,cookie 隨即會(huì)被刪除。
設(shè)置 Cookie
cookie 是 header 一項(xiàng)內(nèi)容,因此可以使用 reponse 的 Header 方法設(shè)置 cookie。
這里也可以測(cè)試驗(yàn)證 Set 和 Add 兩個(gè)方法的差別。當(dāng)然,和文件上傳類似,Go 也提供了常用的工具函數(shù)。
http 的 SetCookie 方法也可以設(shè)置 cookie,就不需要關(guān)系 Set 和 Add 的先后順序了,當(dāng)然第二個(gè)參數(shù)是一個(gè) Cookie 的指針對(duì)象。設(shè)置了 cookie,接下來(lái)就是需要讀 cookie。
讀取 Cookie
讀取 cookie 的方式也有很多,cookie 封裝在header中,當(dāng)然可以通過 header 方法處理。
不使用 Header 方法,也可以使用 Request 的方法:
訪問的時(shí)候可以發(fā)現(xiàn),r.Cookie 返回了對(duì)于 key 的鍵值對(duì),而 r.Cookies 則返回了所有 cookie 的 key 的鍵值對(duì)值。
Cookie 與 消息
cookie 的作用很多,通常記錄客戶端的一些信息,用來(lái)做用戶的登錄驗(yàn)證。現(xiàn)在我們需要使用 cookie 來(lái)做一個(gè)小特性---消息。通常 web 請(qǐng)求發(fā)出后,response 返回?cái)?shù)據(jù),也可以設(shè)置一些消息用來(lái)指引用戶。
setMessageHandler 函數(shù)很簡(jiǎn)單,就是創(chuàng)建一個(gè) cookie 實(shí)例,然后把消息寫入到 cookie,然后再返回給客戶端。
getMessageHandler 首先會(huì)讀取 key 為 flash 的 cookie,如果沒讀到內(nèi)容,則表示消息不存在,否則就創(chuàng)建另外一個(gè) cookie,設(shè)置其過期時(shí)間這里等于清除 cookie。然后把讀取出來(lái)的 message 返回給客戶端。完成消息通信。
總結(jié)
我們討論了 Go 中 cookie 的基本應(yīng)用?,F(xiàn)在的 web 開發(fā)中,人們?cè)絹?lái)越重視網(wǎng)絡(luò)安全,因此 cookie 的安全也成為用戶關(guān)心的內(nèi)容。Go 原生的 cookie 封裝比較簡(jiǎn)單。Go 的社區(qū)卻開發(fā)了很多輪子,實(shí)現(xiàn)了secure cookie,例如 gorilla/securecookie 庫(kù)。實(shí)際開發(fā)中,可能會(huì)借助一些三方的庫(kù)或包來(lái)完成功能。
希望本文所述對(duì)大家Go語(yǔ)言程序設(shè)計(jì)有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。