Python запрашивает заголовок «301», а get возвращает «200» - PullRequest
1 голос
/ 04 июля 2019

При работе с библиотекой запросов 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 нормально»? ) и другие веб-сайты, но они не обращаются к этому Особая разница.

1 Ответ

4 голосов
/ 04 июля 2019

requests.get() автоматически выполняет перенаправления для вашего удобства.

Выключите это, если вы не хотите этого поведения.

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