При работе с библиотекой запросов 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"?
requests.head("https://stackoverflow.com")
Как get и head работают по-разному для получения этих двух разных результатов?
Я прочитал документацию по w3.org и другие подобные вопросы в stackoverflow (например, запрос HEAD получает «403 запрещено», а GET «200 нормально»? ) и другие веб-сайты, но они не обращаются к этому Особая разница.
requests.get() автоматически выполняет перенаправления для вашего удобства.
requests.get()
Выключите это, если вы не хотите этого поведения.
resp = requests.get("http://stackoverflow.com", allow_redirects=False) print(resp.status_code)