【问题标题】:Different http code in get(url).status_code and different one in get(url).historyget(url).status_code 中的不同 http 代码和 get(url).history 中的不同 http 代码
【发布时间】:2020-03-02 16:47:37
【问题描述】:

url='http://example.com/hey.php?redirect=http://example.com' 当我使用get(url).status_code 之类的代码在python3 中检查上述URL 的http 状态代码时,它会将200 作为http 代码。但是,当我输入get(url).history 时,它会给出类似[<Response [302]>] 的内容。你能给我解释一下这种情况吗?!

【问题讨论】:

  • 如果没有看到您正在使用的实际代码,我们会情不自禁。请更新问题以包含我们可以自己运行的完整示例程序。
  • 我不能给你网址。我能做的就是向你解释这个问题。谢谢。
  • 即使您不能向我们展示您正在使用的网址,您肯定可以向我们展示其余的代码吗?即你打电话给get(),但我们对该函数一无所知。是来自requests 模块吗?它来自其他包吗?是你自己写的函数吗?
  • 对不起。我忘了提from requests import *
  • @krishnakumar 这只是模块,我们需要更多信息。顺便问一下,你为什么使用import *

标签: python python-3.x http url


【解决方案1】:

你检查过requests documentation吗?当您获得资源时,服务器可能会对您的客户端说“嘿,今天可以在另一个 URL 上找到此资源。如果需要,请检查”。因此,您的客户会前往一个新位置并最终获得所需的资源。

如果要跟踪此类重定向,请使用 historyrequest 方法。如果您想更改客户端的行为,使其现在“不想”在另一个建议的位置查找资源,那么您在 get 方法参数中设置 allow_redirects=False(默认为 true获取请求)。

在您的情况下,[<Response [302]>] 表示启用了以下重定向,并且您的客户端在到达所需资源之前执行了一次重定向。

【讨论】:

    【解决方案2】:

    这是带有重定向 URL 的默认 request.get() 行为。

    如果您请求返回重定向响应的 URL,requests.get() 将自动跟随重定向。

    status_code是最终请求的结果,history是一路上的所有重定向步骤。

    如果您不希望这种行为,请使用 allow_redirects=False 关键字 arg。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多