Другой код http в get (url) .status_code и другой код в get (url) .history - PullRequest
0 голосов
/ 02 марта 2020

url='http://example.com/hey.php?redirect=http://example.com' когда я проверяю код состояния http вышеуказанного URL-адреса в python3, используя код, такой как get(url).status_code, тогда он дает 200 в качестве кода http. Но когда я набираю get(url).history, это дает что-то вроде [<Response [302]>]. Можете ли вы объяснить мне эту ситуацию?!

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Это поведение по умолчанию request.get() с перенаправленными URL-адресами.

Если вы запрашиваете URL-адрес, который возвращает ответ о перенаправлении, requests.get() будет автоматически следовать за перенаправлением.

status_code is результат последнего запроса, а history - это все шаги перенаправления на этом пути.

Если вы не хотите использовать это поведение, используйте ключевое слово allow_redirects=False arg.

0 голосов
/ 02 марта 2020

Вы проверили запрос документации ? Когда вы получаете ресурс, сервер может сказать вашему клиенту, как «Эй, сегодня этот ресурс можно найти по другому URL. Проверьте, если хотите». Таким образом, ваш клиент переходит в новое местоположение и в конечном итоге достигает необходимого ресурса.

Если вы хотите отследить такое перенаправление, вы используете history метод request. Если вы хотите изменить поведение вашего клиента так, чтобы он теперь «не хотел» искать ресурс в другом предложенном месте, тогда вы устанавливаете allow_redirects=False в параметре get метода (по умолчанию true) для получения заявок).

В вашем случае [<Response [302]>] означает, что следующее перенаправление включено, и ваш клиент выполнил перенаправление один раз до достижения требуемого ресурса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...