为什么Python请求HTTP库总是返回发送的cookie?

时间:2012-12-18 17:12:42

标签: python python-requests

使用python shell

>>> import requests
>>> cookies = {'sentcookie':'666'}
>>> res = requests.get('http://en.wikipedia.org/wiki/Main_Page', cookies=cookies)
>>> res   
<Response [200]>
>>> res.cookies
<<class 'requests.cookies.RequestsCookieJar'>[Cookie(version=0, name='sentcookie', 
value='666', port=None, port_specified=False, domain='', domain_specified=False, 
domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None,  
discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]>
>>>

为什么&#39; sentcookie&#39;包含在从服务器返回的cookie列表中?我已经嗅到了通信,并且没有从服务器返回cookie。 为什么请求将其包含在列表中?如何禁用此行为?

2 个答案:

答案 0 :(得分:1)

不是禁用行为,而是告诉 requests 执行行为

在此:

cookies = {'sentcookie':'666'}
res = requests.get('http://en.wikipedia.org/wiki/Main_Page', cookies=cookies)

您告诉它您希望该Cookie可用,无论是否需要...

您通常会将cookies=用于浏览器缓存中的现有Cookie或某些内容(出于某种原因),并按照正常情况离开requests来处理来自服务器的Cookie

答案 1 :(得分:1)

我有完全相同的问题,我不认为我完全理解你的答案。 假设您要根据文档向您的请求添加cookie 这是正确的方法:

cookies = {'sentcookie':'666'}
response = requests.get('http://en.wikipedia.org/wiki/Main_Page', cookies=cookies)

现在,如果服务器返回cookie,您可以通过以下方式访问它们:

response.cookies 

但即使服务器没有退回,我也不希望得到我发送的相同的cookie,因为某种原因它正在发生。

如何防止此行为?