2014-01-10 2 views
2

, когда я использую модуль запросов, чтобы проверить, доступна ли страница. , например:Модуль запросов python: какая разница между методом head и get request

>>> import requests 
>>> url = "http://www.motie.com/book/29675" 
>>> res = requests.head(url) 
>>> print res.status_code 
404 
>>> res = requests.get(url) 
>>> print res.status_code 
200 

Я получил status_code 404 и 200 для головы и GET соответственно. Я не знаю почему. кроме того, как могу я отложить причину. Большое спасибо.

+1

Вы можете видеть, что происходит, разместив snoop. В окне linux 'tcpdump -i any -s 2000 -A host www.motie.com' покажет вам, что вы отправляете и получаете с сервера. –

ответ

3

Веб-сервер, с которым вы связываетесь, может вести себя так, как ему кажется. В этом случае он сообщает, что он не может найти ответ на запрос head, даже если он может найти ответ на запрос get. Это не то, что он должен делать, но вам нужно будет исправить сервер, чтобы решить эту проблему.

Дополнительную информацию о запросе headhere и, конечно же, в документе WP here.

На самом деле, я думаю, что это ошибка на сервере.

+0

Возможно, вы правы, HEAD не поддерживается сервером. Но я просто посетитель сервера, как я могу доказать, что (веб-сервер не поддерживает метод HEAD)? – user2994644

+1

Ну, это _supports_ it (заявка 404 означает «не найден», а не «плохая команда» или «ошибка сервера» или аналогичная). Он просто не отвечает на него правильно. Согласно стандарту HTTP по запросу HEAD он должен передавать то же самое, что и по запросу GET, за вычетом содержимого. Это явно не так. – Alfe