首页 > 解决方案 > 尽管指定了allow_redirects = False,但使用Python 3 Requests库发布,仍在重定向

问题描述

我正在尝试使用对 POST 表单数据的请求,并且需要检查 POST 请求本身的状态代码,但是尽管指定allow_redirects=False了 ,但请求仍重定向到 GET 请求,该请求返回状态代码200,而不是 POST的状态码302

注意:我已经在 Postman 中测试了完全相同的 POST 请求,并关闭了自动重定向,并且得到了预期的行为。

编辑:

我能够在这里找到一个名为Requestsstrict_mode的 PyPi 页面的属性

我设法通过在 Google 上使用绝对搜索在法语请求文档上找到了这个,但是英语文档上的同一个地方没有列出该属性。strict_mode

这是与我的问题有关的法语文档的摘录:

strict_mode:如果为 true,Requests 将尽最大努力遵循 RFC(例如 POST 重定向)。


编辑2:

strict_mode在请求 github repo 中发现了这一点: https ://github.com/psf/requests/commit/95a03532c36f1afd38c395f7160c7f7086557b7b

它似乎自 2012 年以来已被删除,所以有没有办法绕过这个不是 hacky 的?


最初将此作为答案发布,然后发现它不起作用:

看来我必须做类似的事情:https ://github.com/psf/requests/issues/1325

我在谷歌上找到了这个:https ://subscription.packtpub.com/book/networking_and_servers/9781784395414/1/ch01lvl1sec18/tracking-redirection-of-the-request-using-request-history

对于遇到此问题的其他人,它显示了如何在被重定向时获取先前状态的列表

编辑:

刚刚尝试实现这一点,即使允许重定向设置为 true,历史记录也是空白的。我不确定 Postman 如何获取 302 代码,Chrome 开发工具在查看网络选项卡时可以获取正确的代码,但请求不能。

标签: pythonpython-3.xpython-requests

解决方案


感谢@barny 在对我的问题的评论中发布的GitHub 问题中的Stack Overflow 链接中的评论,我启用了 http 调试并看到我使用的是旧 url,因为我忘记更新包含来自测试一个到我在 Postman 中使用的正确的一个。

因此,尽管代码在技术上有效,但它并没有发布到新的 url。


推荐阅读