首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python帮助(httplib2 cookies)

Python帮助(httplib2 cookies)
EN

Stack Overflow用户
提问于 2010-02-19 13:44:32
回答 2查看 1.6K关注 0票数 0

有着与这个问题的海报相同的问题:httplib2,如何设置多个cookie?

饼干看起来像这样..。

PHPSESSID=8527b5532b6018aec4159d81f69765bd; path=/; expires=Fri, 19-Feb-2010 13:52:51 GMT, id=1578; expires=Mon, 22-Feb-2010 13:37:51 GMT, password=123456; expires=Mon, 22-Feb-2010 13:37:51 GMT, sid=8527b5532b6018aec4159d81f69765bd

请注意它是如何使用逗号和分号分隔cookie的,但是cookie本身也使用逗号。

这太复杂了,我无法用正则表达式将它们正确地分开,如果有人想试一试的话,我会非常感激的!

EN

回答 2

Stack Overflow用户

发布于 2010-02-19 14:03:18

你试过炊事 / http.cookiejar了吗?

如果您将cookie解释为

代码语言:javascript
复制
PHPSESSID=8527b5532b6018aec4159d81f69765bd;
path=/;
expires=Fri, 19-Feb-2010 13:52:51 GMT, id=1578;
expires=Mon, 22-Feb-2010 13:37:51 GMT, password=123456; 
expires=Mon, 22-Feb-2010 13:37:51 GMT, sid=8527b5532b6018aec4159d81f69765bd

那么只有分号才是真正的分隔符,逗号分隔符只是因为它前面的过期日期。

如果您对到期日期不感兴趣,则可以使用1 regex筛选出过期日期。

代码语言:javascript
复制
s/expires=[^,]+,[^,]+, //g

然后通过;将整个字符串分开,并将它们解析为key=value对。

票数 1
EN

Stack Overflow用户

发布于 2010-02-19 14:22:40

请注意它是如何使用逗号和分号分隔cookie的,但是cookie本身也使用逗号。

正如所引用的那样,歧义逗号使得字符串无法用regex或任何其他工具进行解析。那根绳子是从哪里来的?

作为一个Set-Cookie:头值,它将是完全无效的,并且不会在任何浏览器中工作。浏览器将PHPSESSID设置为会话cookie (因为过期日期格式与额外的逗号无效),而忽略其余的。必须用多个Set-Cookie头来设置多个cookie,而不是组合成一个。

编辑:好的,看起来httplib2正在使用stdlib email包来解析头来处理HTTP数据。在电子邮件中,RFC822系列标准要求具有相同名称的多个标头(例如,例如。To:地址)等效于带有逗号连接的值的单个标头。

但是,HTTP响应是显式的,而不是are 822家族标准的;这样处理它们是完全不合适的。通过使用email解析HTTP响应,httplib2似乎使自己无法正确处理任何多用途的报头,而且Set-Cookie报头经常是这样使用的。出于这个原因,我认为httplib2是完全失效的,因此建议不要使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2296654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档