Получить практические навыки по работе с HTTP протоколом посредством
Telnet.
Инструкция по установке Telnet на Windows.
Некоторые веб-сайты расположены на серверах с установленной задержкой соединения, поэтому при истечении нескольких секунд сервер может принудительно оборвать соединение.
Например:
$ telnet wikipedia.org 80
Trying 91.198.174.192...
Connected to wikipedia.org.
Escape character is '^]'.
GET Connection closed by foreign host.Для выполнения лабораторной работы, обойти эту проблему можно сохранив текст запроса в начале в текстовом редакторе, а затем после установки соединения скопировать его в консоль.
Многие сайты работают по протоколу HTTPS, который подразумевает обмен сертификатами для шифрования трафика. Telnet не умеет это делать в автоматическом режиме, поэтому если подключиться на порт 443 (HTTPS) при помощи Telnet и попробовать отправить запрос, то наверняка в ответе будет ошибка 400 Bad Request.
$ telnet wikipedia.org 443
Trying 91.198.174.192...
Connected to wikipedia.org.
Escape character is '^]'.
GET /ip HTTP/1.1
Host: wikipedia.org
HTTP/1.1 400 Bad Request
Server: nginx/1.11.13
Date: Mon, 18 Sep 2017 06:05:45 GMT
Content-Type: text/html
Content-Length: 272
Connection: close
<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.11.13</center>
</body>
</html>
Connection closed by foreign host.Отправлять запросы по HTTPS можно используя утилиту openssl.
myproject/
├── about
│ └── aboutme.html
└── index.htmlindex.html написать 2 ссылки с прямым и абсолютным обращением к
aboutme.html. В файле aboutme.html создать такие же ссылки на файл
index.html.Подключиться по telnet к http://wikipedia.org и отправить запрос:
GET /wiki/страница HTTP/1.1
Host: ru.wikipedia.org
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
(пустая строка)Проанализировать ответ сервера. Описать работу HTTP протокола в данном случае.
Разрешается выбрать любой другой веб-сайт вместо http://WikiPedia.org
Отправить запросы на http://httpbin.org, проанализировать ответ и код состояния. Описать работу HTTP протокола в каждом запросе.
GET /ip HTTP/1.1
Host: httpbin.org
Accept: */*GET /get?foo=bar&1=2&2/0&error=True HTTP/1.1
Host: httpbin.org
Accept: */*POST /post HTTP/1.1
Host: httpbin.org
Accept: */*
Content-Length: вычислить длину контента и втавить сюда число!!!
Content-Type: application/x-www-form-urlencoded
foo=bar&1=2&2%2F0=&error=TrueПопробовать ввести неверное значение Content-Length.
GET /cookies/set?country=Ru HTTP/1.1
Host: httpbin.org
Accept: */*GET /cookies HTTP/1.1
Host: httpbin.org
Accept: */*GET /redirect/4 HTTP/1.1
Host: httpbin.org
Accept: */*Проверить глубину рекурсии в браузере, сравниь со значением опции
network.http.redirection-limit из about:config в браузере FireFox.
Примечание
action="http://httpbin.org/post" method="POST" и
enctype="multipart/form-data"firstname, lastname, group, message
(textarea), myimg (file).Проанализировать ответ. Описать работу HTTP протокола в данном случае.