golang cookiejar 怎么自己添加cookies
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang cookiejar 怎么自己添加cookies相关的知识,希望对你有一定的参考价值。
参考技术A 用GO语言(golang)写了一个简单的Web服务,但是始终无法获取Cookie的值现象如下:
使用Chrome的开发者工具观察Cookie可以看到设置的Cookie的值
使用r.Cookie(CookieName)无法取得Cookie内容,错误信息:http: named cookie not present
在服务器端打印Requset结构,结果中没有设置的Cookie值
最后Google了一下,在golang-nuts的论坛里找到了解决方法。
根本原因在于GO语言(golang)不能获取值中带有空格的Cookie
而且会将Cookie中的一些特殊字符替换为空格
//src/pkg/net/http.go
func (c *Cookie) String() string
...
fmt.Fprintf(&b, "%s=%s", sanitizeName(c.Name), sanitizeValue(c.Value))
...
...
var cookieValueSanitizer = strings.NewReplacer("\n", " ", "\r", " ", ";", " ")
...
func sanitizeValue(v string) string
return cookieValueSanitizer.Replace(v)
俺就是使用了分号。。。
另外讨论中提到的不要使用指针传递http.ResponseWriter的问题,
我试了一下,使用指针传递http.ResponseWriter不会对Cookie的设置和取得产生影响
不过很多函数需要的都是http.ResponseWriter的对象,如果传指针,很多地方要写*http.ResponseWriter着实也挺麻烦
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
本文实例讲述了php使用CURL不依赖COOKIEJAR获取COOKIE的方法。分享给大家供大家参考。具体分析如下:
PHP中CURL类是一个非常牛逼的工具类,具体怎么牛逼就不啰嗦了。
对于COOKIE,CURL类也有很不错的支持,但不够灵活,并未能通过现成的方法以变量的方法获取到,而以要通过以下方法实现。
// 把COOKIE保存至cookie.txt curl_setopt($ch, CURLOPT_COOKIEFILE, ‘cookie.txt‘); curl_setopt($ch, CURLOPT_COOKIEJAR, ‘cookie.txt‘);
先把COOKIE保存文件,调用的时候还得读取文件,这样意味着两次的IO操作,效率如何,不用说大家都清楚了。
那么有没有办法可以绕过写读文件呢?不卖关子,直接上代码:
// 初始化CURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // 获取头部信息 curl_setopt($ch, CURLOPT_HEADER, 1); // 返回原生的(Raw)输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行并获取返回结果 $content = curl_exec($ch); // 关闭CURL curl_close($ch); // 解析HTTP数据流 list($header, $body) = explode(" ", $content); // 解析COOKIE preg_match("/set-cookie:([^ ]*)/i", $header, $matches); // 后面用CURL提交的时候可以直接使用 // curl_setopt($ch, CURLOPT_COOKIE, $cookie); $cookie = $matches[1];
希望本文所述对大家的php程序设计有所帮助。
转: https://blog.csdn.net/dbg8685/article/details/53289149
参考: http://www.zjmainstay.cn/php-curl
以上是关于golang cookiejar 怎么自己添加cookies的主要内容,如果未能解决你的问题,请参考以下文章
php使用CURL不依赖COOKIEJAR获取COOKIE的方法