首页 > 解决方案 > 如何使用 python requests.head 方法遵循 30x 重定向

问题描述

我正在使用 python 请求库向网站发送请求,我只对获取响应标头感兴趣。我遇到的问题是,如果我使用 requests.head() 方法,并且如果响应是 30x 重定向,则 requests.head() 方法将不会跟随重定向到最终网站。虽然使用 requests.get() 方法确实遵循重定向,但它比 requests.head() 慢得多。

这是一个例子:

>>> r = requests.head('http://google.com')
>>> r.status_code
301

>>> r = requests.get('http://google.com')
>>> r.status_code
200

因为 google.com 会将所有 http 请求重定向到 https,所以如果我向http://google.com发送请求,我会收到重定向到https://google.com的响应。

所以我的问题是,是否有办法(无需查看响应标头并手动跟随“位置”标头)让 requests.head() 方法跟随重定向?

我做了很多搜索,但没有找到真正相关的东西。

标签: pythonhttppython-requests

解决方案


这就是你需要的!检查参考

>>> import requests
>>> r = requests.head('http://github.com/', allow_redirects=True)
>>> r.history
>>> [<Response [301]>]

推荐阅读