Python请求集cookie未正确设置
Python请求集cookie未正确设置,python,cookies,python-requests,Python,Cookies,Python Requests,“Set-cookie”未正确返回到请求会话 代码: 让我们检查响应的cookie(空) 让我们检查会话的cookie(空) r.cookies 我认为请求应该自动将设置cookie加载到会话中,对吗?为什么它不在这里工作,我应该如何使用这里的标题设置cookie?在处理请求之前创建一个会话: 导入请求 s=请求。会话() response=s.put(“192.168.1.111/getC”,json=data,verify=False) 如文件中所述: 会话对象 会话对象允许您跨请求持久
“Set-cookie”
未正确返回到请求会话
代码:
让我们检查响应的cookie(空)
让我们检查会话的cookie(空)
r.cookies
我认为
请求
应该自动将设置cookie
加载到会话中,对吗?为什么它不在这里工作,我应该如何使用这里的标题设置cookie?在处理请求之前创建一个会话
:
导入请求
s=请求。会话()
response=s.put(“192.168.1.111/getC”,json=data,verify=False)
如文件中所述:
会话对象
会话对象允许您跨请求持久化某些参数。它还跨会话实例发出的所有请求持久化cookie,并将使用urllib3的连接池。因此,如果您向同一主机发出多个请求,则底层TCP连接将被重用,这将导致性能显著提高(请参阅HTTP持久连接)
然后,在会话级别检查cookie,而不是在响应中检查cookie:
s.cookies
我认为这里的请求没有问题,可能是服务器给了你错误的响应
似乎请求
无法识别此设置Cookie
响应头,因为其中的域
不正确:
'Set-Cookie':'Credentials=sdf34dsfsfsdf234r23r;路径=/;Domain=blah.local;安全'
我已经在localhost
上设置了一个测试web服务器,并尝试手动设置set Cookie
头,与上面的完全相同,而响应的Cookie是空的
然后我删除了;Domain=blah.local;安全
部分来自设置Cookie
标题(域
和安全
指令),一切正常。“我认为请求应自动将设置Cookie加载到会话”文档说明了什么?@DeepSpace我在文档中没有找到它,但我记得它应该…检查会话
级别的cookies:s.cookies
我仍然不明白,我检查了响应cookie和会话。看到我的最后一个代码块了吗?你能发送你请求的URL吗?我刚刚尝试过,正如你所说的,域和scure
会影响到这一点。但这为什么特别呢?这是一个请求
的bug吗?正如我前面提到的–这不是请求
bug。您的本地服务器给您错误的设置Cookie
标题–域
应该与您请求的域匹配,或者被完全删除(请阅读答案中的链接)。
import requests
r = requests.Session()
respond = r.put("192.168.1.111/getC", json=data, verify=False)
respond.cookies
<RequestsCookieJar[]>
respond.headers
{'Content-Type': 'application/json; charset=UTF-8', 'Date': 'Sun, 30 Jun 2019 11:19:05 GMT+00:00', 'Accept-Ranges': 'bytes', 'Server': 'Restlet-Framework/2.3.12', 'Set-Cookie': 'Credentials=sdf34dsfsdf23rsdfsdf234r23r23r; Path=/; Domain=blah.local; Secure'}
r.cookies
<RequestsCookieJar[]>