python - 尽管指定了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
对于遇到此问题的其他人,它显示了如何在被重定向时获取先前状态的列表
编辑:
刚刚尝试实现这一点,即使允许重定向设置为 true,历史记录也是空白的。我不确定 Postman 如何获取 302 代码,Chrome 开发工具在查看网络选项卡时可以获取正确的代码,但请求不能。
解决方案
感谢@barny 在对我的问题的评论中发布的GitHub 问题中的Stack Overflow 链接中的评论,我启用了 http 调试并看到我使用的是旧 url,因为我忘记更新包含来自测试一个到我在 Postman 中使用的正确的一个。
因此,尽管代码在技术上有效,但它并没有发布到新的 url。
推荐阅读
- dart - Flutter 中的一次性警报对话
- python - PyCharm 中的自动完成功能不起作用。我已经确保解释器指向我的项目,并且我尝试过使缓存无效
- javascript - 在不加载完整歌曲的情况下制作音频精灵
- java - 接收输入并使用递归变成骆驼案例
- javascript - RNDocumentPicker:本机模块不可用
- ssl - TLS 客户端是否需要在信任库中有中间 CA?
- java - JSoup 在使用 Connect 函数时抛出错误
- python - 根据分组后的元素个数进行条件分组填充缺失值
- python - 在 Python 中将不需要的日期时间格式化数据值更改为带有破折号的数字
- sql - 查询失败错误:UError:无法解析表名:缺少数据集名称。大查询