Ответ 1
Лучший способ визуализировать это - использовать анализатор пакетов, например Wireshark и следует за TCP-потоком. HTTP просто использует TCP для отправки потока данных, начиная с нескольких строк заголовков HTTP. Часто эти данные легко читать, поскольку они состоят из HTML, CSS или XML, но это может быть любой тип данных, который передается через Интернет (исполняемые файлы, изображения, видео и т.д.).
Для запроса GET ваш компьютер запрашивает определенный URL-адрес, и веб-сервер обычно отвечает кодом состояния 200, а содержимое веб-страницы отправляется непосредственно после заголовков ответа HTTP. Этот контент - это тот же контент, который вы увидите, если бы просмотрел источник веб-страницы в своем браузере. Вы упомянутая строка запроса является частью URL-адреса и включается в заголовок запроса HTTP GET, который ваш компьютер отправляет на веб-сервер. Ниже приведен пример запроса HTTP GET для http://accel91.citrix.com:8000/OA_HTML/OALogout.jsp?menu=Y, за которым следует ответ перенаправления 302 от сервера. Некоторые из заголовков HTTP завернуты из-за размера окна просмотра (на самом деле это занимает всего одну строку), а перенаправление 302 включает в себя простую веб-страницу HTML со ссылкой на перенаправленную веб-страницу (большинство браузеров автоматически перенаправляют любой ответ 302 к URL-адресу, указанному в заголовке Location вместо отображения ответа HTML):
Для запроса POST у вас может быть строка запроса, но это необычно и не имеет ничего общего с данными, которые вы используете POST. Вместо этого данные включаются непосредственно после заголовков HTTP, которые ваш браузер отправляет на сервер, аналогично ответу 200, который веб-сервер использует для ответа на запрос GET. В случае POSTing простой веб-формы эти данные закодированы с использованием той же кодировки URL, которую использует строка запроса, но если вы используете SOAP веб-службы он также может быть закодирован с использованием многочастного формата MIME и XML-данных.
Например, вот что HTTP POST для веб-службы SOAP на основе XML, расположенной в http://192.168.24.23:8090/msh, выглядит как Wireshark Следуйте за TCP-потоком: