为什么 python requests.get 和 requests.head 给出不同的 HTTP 响应(200 与 302)?

Why python requests.get and requests.head give different HTTP responses (200 vs 302)?

代码如下:

requests.get('https://www.tng-project.org/api/TNG50-1/snapshots/99/subhalos/503437/cutout.hdf5', params = {'stars':'Masses'}, headers={"api-key":"7d595e082708acc270489c7c78dbcc53"})

这里我得到结果:<Response [200]>

但是如果我把requests.get换成requests.head,如下:

requests.head('https://www.tng-project.org/api/TNG50-1/snapshots/99/subhalos/503437/cutout.hdf5', params = {'stars':'Masses'}, headers={"api-key":"7d595e082708acc270489c7c78dbcc53"})

我得到结果 <Response [302]>,这意味着我无法从该命令行获取任何有意义的信息。

requests.getrequests.head 的相同代码怎么会给出不同的结果?

我有可能 <Response [200]> 得到 requests.head 吗?因为我想在不下载文件的情况下阅读headers。

默认情况下 requests 遵循重定向,但 requests.head 特别不遵循:

requests.head
**kwargs – Optional arguments that request takes. If allow_redirects is not provided, it will be set to False (as opposed to the default request behavior).

https://docs.python-requests.org/en/latest/api/#requests.head

所以,要么弄清楚是否有一个规范的 URL 可以直接点击而无需重定向,或者传递 allow_redirects=True.