为什么 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.get
和 requests.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
.
代码如下:
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.get
和 requests.head
的相同代码怎么会给出不同的结果?
我有可能 <Response [200]>
得到 requests.head
吗?因为我想在不下载文件的情况下阅读headers。
默认情况下 requests
遵循重定向,但 requests.head
特别不遵循:
requests.head
**kwargs
– Optional arguments that request takes. Ifallow_redirects
is not provided, it will be set toFalse
(as opposed to the default request behavior).https://docs.python-requests.org/en/latest/api/#requests.head
所以,要么弄清楚是否有一个规范的 URL 可以直接点击而无需重定向,或者传递 allow_redirects=True
.