Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python';s请求不能正确处理Cookie?_Python_Python 3.x_Cookies_Python Requests_Multipartform Data - Fatal编程技术网

python';s请求不能正确处理Cookie?

python';s请求不能正确处理Cookie?,python,python-3.x,cookies,python-requests,multipartform-data,Python,Python 3.x,Cookies,Python Requests,Multipartform Data,我在简单授权和上传API脚本方面有问题 经授权后,客户端将收到多个cookie,包括PHPSESSID cookie(在浏览器中) 我使用请求。post方法和表单数据进行授权: r = requests.post(url, headers = self.headers, data = formData) self.cookies = requests.utils.dict_from_cookieja(r.cookies) 标题仅用于自定义用户代理 授权是100%的罚款(有一个注销链接上的页面)

我在简单授权和上传API脚本方面有问题

经授权后,客户端将收到多个cookie,包括PHPSESSID cookie(在浏览器中)

我使用
请求。post
方法和表单数据进行授权:

r = requests.post(url, headers = self.headers, data = formData)
self.cookies = requests.utils.dict_from_cookieja(r.cookies)
标题仅用于自定义
用户代理

授权是100%的罚款(有一个注销链接上的页面)。 稍后,我尝试使用授权会话cookie上载数据:

r = requests.post(url, files = files, data = formData, headers = self.headers, cookies = self.cookies)
但该网站拒绝了这一请求。如果我们比较来自script和googlechrome(使用Wireshark)的请求,则请求主体没有区别

唯一的区别是,2cookies由requests类发送,而googlechrome发送7


更新:再次检查,第一个请求收到7个cookie。post方法忽略了一半…

我在代码中的错误是,我将下一个API请求中的cookie分配给会话cookie字典。在登录后的每个请求中,Cookie都会被即将到来的响应Cookie“重置”,这就是问题所在。由于身份验证cookie仅在登录请求时分配,因此它们在下一个请求时丢失

在每个授权请求之后,我使用更新(),而不是分配

self.cookies.update( requests.utils.dict_from_cookiejar(r.cookies) )

解决了我的问题,上传效果不错

我不知道
请求中有任何cookie问题,没有。使用Chrome Incognito选项卡,第一次请求站点时设置了多少cookie?该站点可以根据用户代理或其他请求头很好地改变行为。接下来,您确定页面没有使用嵌入登录表单的CSRF令牌吗?接下来,cookies的过期日期是什么?这些cookie上是否设置了特定的标志?使用
requests.Session()
对象管理cookies时会发生什么情况?@MartijnPieters我的错,我已经解决了错误。我不会使用
课程
课程,对未来有很好的建议!您应该只使用会话,这样您就不必自己处理它们