【问题标题】:POSTing with Python 3 Requests library despite specifying allow_redirects=False, is still redirecting尽管指定了allow_redirects = False,但使用Python 3 Requests库发布,仍在重定向
【发布时间】: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

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

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

编辑:

刚刚尝试实现这一点,即使允许重定向设置为 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


【解决方案1】:

感谢@barny 在我的问题的 cmets 中发布的 GitHub issue 中的 Stack Overflow link 中的评论,我启用了 http 调试并看到我使用的是旧 url,因为我忘记更新包含从测试地址到我在 Postman 中使用的正确地址的 url。

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

【讨论】:

    猜你喜欢
    • 2016-03-04
    • 1970-01-01
    • 2022-11-18
    • 2021-04-15
    • 1970-01-01
    • 2017-01-24
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多