首页 > 解决方案 > Python请求头显示“301”而get返回“200”

问题描述

在使用 python 请求库时,我使用 get 和 head http 方法得到了两个不同的响应 -

使用“头”输入:

requests.head("http://stackoverflow.com")

输出:

<Response [301]>

使用“get”输入时:

requests.get("http://stackoverflow.com")

输出是:

<Response [200]>

虽然这很明显“ http://stackoverflow.com ”重定向到“ https://stackoverflow.com ”(作为requests.head("https://stackoverflow.com")返回<Response [200]>),这解释了第一个实例的 301 响应,但为什么它没有给出相同的“get”方法的响应?

get 和 head 如何以不同的方式产生这两种不同的结果?

我阅读了 w3.org 文档和 stackoverflow 中的类似问题(例如,HEAD 请求收到“403 禁止”而 GET “200 ok”?)和其他网站,但他们没有解决这个特殊的差异。

标签: pythonhttpgetpython-requests

解决方案


requests.get()为了您的方便,自动跟随重定向。

如果您不想要这种行为,请将其关闭。

resp = requests.get("http://stackoverflow.com", allow_redirects=False)
print(resp.status_code)

推荐阅读