【发布时间】:2020-09-22 05:19:41
【问题描述】:
我正在尝试使用对 POST 表单数据的请求,并且需要检查 POST 请求本身的状态代码,但是尽管指定了 allow_redirects=False,该请求仍然重定向到返回状态代码的 GET 请求200,而不是 POST 的状态码 302。
注意:我已经在 Postman 中测试了完全相同的 POST 请求,并关闭了自动重定向,并且得到了预期的行为。
编辑:
我能够在 Requests 的 PyPi 页面 here 上找到一个名为 strict_mode 的属性
我通过在 Google 上使用绝对搜索 strict_mode 设法在法语请求文档上找到 this,但是 English docs 上的同一位置没有列出该属性。
这是与我的问题有关的法语文档的摘录:
strict_mode:如果为 true,Requests 将尽最大努力遵循 RFC(例如 POST 重定向)。
修改 2:
我在 requests github repo 上找到了关于 strict_mode 的内容:
https://github.com/psf/requests/commit/95a03532c36f1afd38c395f7160c7f7086557b7b
它似乎自 2012 年以来已被删除,所以有没有一种方法可以绕过它而不是 hacky?
最初将其作为答案发布,然后发现它不起作用:
看来我必须做类似的事情:https://github.com/psf/requests/issues/1325
对于遇到此问题的其他人,它显示了如何在被重定向时获取先前状态的列表
编辑:
刚刚尝试实现这一点,即使允许重定向设置为 true,历史记录也是空白的。我不确定 Postman 是如何获取 302 代码的,Chrome 开发工具在查看网络选项卡时可以获取正确的代码,但请求不能。
【问题讨论】:
-
a) requests 是开源的,所以你可以看到 strict_mode 可能会做什么,并且 b) 肯定是第一个搜索的地方,然后可能会在 requests github Issues 上询问这样的请求问题?
-
@barny 关于您的第一点,我现在就这样做。关于你的第二个,我认为的最后一件事是图书馆有问题,而不是我犯了错误或误解了什么,并且从完全缺乏关于在线 POST 重定向的信息来看,这显然不是一个错误.
-
不存在“完全缺乏关于 POST 重定向的信息”。它在 github 问题中;请参阅 github.com/psf/requests/issues/5284 - 建议您发布一些 minimal reproducible example 代码和显示问题所在的 URL。
-
另请参阅 github.com/psf/requests/issues/5003,了解在 真正 不希望非人类访问的网站上遇到 POST 问题的人。
-
@barny 关于这个问题的最后评论是您应该能够通过
allow_redirects=False“禁用自动重定向”,但情况似乎并非如此。澄清:问题 5284
标签: python python-3.x python-requests