Python请求标头显示“ 301”,而获取返回“ 200”

时间:2019-07-04 13:04:50

标签: python http get python-requests

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

使用“ head”输入:

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 request receives "403 forbidden" while GET "200 ok"?)和其他网站中的类似问题,但它们没有解决这一特殊差异。

1 个答案:

答案 0 :(得分:4)

为方便起见,

requests.get()会自动进行重定向。

如果您不希望出现这种情况,请将其关闭。

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