Ошибка использования HTTP через Telnet на терминале

Чтобы получить доступ к www.ietf.org/rfc.html, я ввел следующие команды:

telnet www.ietf.org 80 > log
get /rfc.html HTTP/1.1
Host: www.ietf.org

Когда я набирал третью команду, появилось следующее сообщение:

Connection closed by foreign host.

Запись в журнале была:

> Trying 64.170.98.30...
Connected to www.ietf.org.
Escape character is '^]'.
HTTP/1.1 400 Bad Request
Date: Thu, 27 Dec 2012 09:32:01 GMT
Server: Apache/2.2.10 (Linux/SUSE) mod_ssl/2.2.10 OpenSSL/0.9.8h PHP/5.2.13 with     Suhosin-Patch mod_python/3.3.1 Python/2.6 mod_wsgi/3.3 mod_perl/2.0.4 Perl/v5.10.0
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>

Так в чем же проблема?

2
задан 27 December 2012 в 13:49

1 ответ

Предполагая, что вы можете получить файл с помощью wget, как предложил Эрик Карвалью (wget www.ietf.org./rfc.html), проблема, скорее всего, заключается в том, что веб-сервер завис на вас, потому что вы отправили запрос недостаточно быстро. [ 119]

Каждый раз, когда извлекается страница, устанавливается отдельное TCP-соединение с HTTP-портом веб-сервера. После подключения, если вы не отправите команду достаточно быстро, сервер будет предполагать, что соединение прервано (что случается довольно часто, даже если большинство веб-браузеров минимизируют его, должным образом прерывая свои TCP-соединения, когда они сделаны). [ 1110]

Если ваша цель - просто загрузить страницу и посмотреть ее, вам следует использовать wget, curl или fetch вместо telnet. Вы можете просмотреть файл в командной строке с помощью cat или less.

Если ваша цель - поиграть с использованием telnet для доступа к веб-контенту - например, чтобы улучшить ваше понимание HTTP - тогда вы можете подумать о написании программы или сценария (это может быть даже сценарий оболочки), который действует как простой интерфейс для telnet, принимая имя сервера и команды HTTP, а затем подключается к серверу, после чего быстро отправляя команду (команды).

0
ответ дан 27 December 2012 в 13:49

Другие вопросы по тегам:

Похожие вопросы: