Python请求POST命令未遵循302重定向

2024-10-02 04:30:59 发布

您现在位置:Python中文网/ 问答频道 /正文

当通过请求将POST请求传递到网站时,它无法完成并将无限期等待。在

我回顾了Fiddler中的行为,可以看到POST请求通过302重定向成功返回。但是,请求将继续等待,并且永远不会继续,尽管数据包已返回。在

我被困在如何诊断这一点,因为我没有得到可靠的错误和包似乎返回,任何帮助将不胜感激。在

post请求的构造如下:

loginData = 'data=45B892A0F9C127FB0A052CB&cid=1000'
s.post(url, verify=rVerify, headers=headers, data=loginData)

我尝试过允许重定向为真和假,但没有成功。在

以下是Fiddler中的请求和响应:

fiddler result

更新标头详细信息:

^{pr2}$

更新:

  • 我只使用URL进行了测试,命令仍将挂起。在
  • 我还尝试了一个GET请求,但这也挂起了。在

Tags: urldata网站错误数据包post重定向headers
2条回答

您可以尝试使用POST对象手动重定向302返回的下一个URL。在

loginData = 'data=45B892A0F9C127FB0A052CB&cid=1000'
response = s.post(url, verify=rVerify, headers=headers, data=loginData)

next_url = response['location']

# do your next step here using the returned URL

302应该在报头中返回一个URL作为“Location”的值进行重定向。如上所示,您可以在响应对象字典中找到它。在

来源:https://en.wikipedia.org/wiki/HTTP_302https://2.python-requests.org/en/master/api/#requests.Response

所以问题似乎出在Python3和httplib库无法解析从服务器返回的头。在

问题是:https://github.com/kennethreitz/requests/issues/3098

为了解决这个问题,我已经改为python2,它不需要以相同的方式解析头。在

相关问题 更多 >

    热门问题