golang Cookie
发布时间:2020-12-16 18:37:48 所属栏目:大数据 来源:网络整理
导读://Cookie的原理: Cookie是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。Cookie的基本工作原理如果用户再次访问站点上的页面,当该用户输入URLwww.*****.com时,浏览器就
//Cookie的原理: Cookie是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。Cookie的基本工作原理如果用户再次访问站点上的页面,当该用户输入URLwww.*****.com时,浏览器就会在本地硬盘上查找与该URL相关联的Cookie。如果该Cookie存在,浏览器就将它与页面请求一起发送到您的站点。主要是用于维护HTTP的状态的作用。 下面测试一下golang的Cookie的库,第一次请求从response获取cookie,然后第二次请求加在resquest信息中 packagemain import( "fmt" "io/ioutil" "net/http" "net/http/cookiejar" ) vargCurCookies[]*http.Cookie vargCurCookieJar*cookiejar.Jar funcinitAll(){ gCurCookies=nil //varerrerror; gCurCookieJar,_=cookiejar.New(nil) } //geturlresponsehtml funcgetUrlRespHtml(urlstring)string{ fmt.Printf("getUrlRespHtml,url=%s",url) varrespHtmlstring="" httpClient:=&http.Client{ CheckRedirect:nil,Jar:gCurCookieJar,} httpReq,err:=http.NewRequest("GET",url,nil) httpResp,err:=httpClient.Do(httpReq) fmt.Printf("httpgeturl=%sresponseerror=%sn",err.Error()) } fmt.Printf("httpResp.Header=%s",httpResp.Header) fmt.Printf("httpResp.Status=%s",httpResp.Status) deferhttpResp.Body.Close() body,errReadAll:=ioutil.ReadAll(httpResp.Body) iferrReadAll!=nil{ fmt.Printf("getresponseforurl=%sgoterror=%sn",errReadAll.Error()) } //全局保存 gCurCookies=gCurCookieJar.Cookies(httpReq.URL) respHtml=string(body) returnrespHtml } funcdbgPrintCurCookies(){ varcookieNumint=len(gCurCookies) fmt.Printf("cookieNum=%d",cookieNum) fori:=0;i<cookieNum;i++{ varcurCk*http.Cookie=gCurCookies[i] fmt.Printf("n------Cookie[%d]------",i) fmt.Printf("tName=%s",curCk.Name) fmt.Printf("tValue=%s",curCk.Value) fmt.Printf("tPath=%s",curCk.Path) fmt.Printf("tDomain=%s",curCk.Domain) fmt.Printf("tExpires=%s",curCk.Expires) fmt.Printf("tRawExpires=%s",curCk.RawExpires) fmt.Printf("tMaxAge=%d",curCk.MaxAge) fmt.Printf("tSecure=%t",curCk.Secure) fmt.Printf("tHttpOnly=%t",curCk.HttpOnly) fmt.Printf("tRaw=%s",curCk.Raw) fmt.Printf("tUnparsed=%s",curCk.Unparsed) } } funcmain(){ initAll() fmt.Printf("======step1:getCookie======") varbaiduMainUrlstring="http://www.baidu.com/" fmt.Printf("baiduMainUrl=%s",baiduMainUrl) getUrlRespHtml(baiduMainUrl) dbgPrintCurCookies() fmt.Printf("n======step2:usetheCookie======") vargetapiUrlstring="https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true" getUrlRespHtml(getapiUrl) dbgPrintCurCookies() } //golang的Cookie使用挺简单的,通过Cookie可以维护登录状态 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |