ПРОТОКОЛЫ HTTP
HTTP - HyperText Transfer Protocol Протокол уровня приложений Текущая версия HTTP/1.1
ДОСТОИНСТВА VS НЕДОСТАТКИ Плюс : - Внедрение собственных заголовков. Минусы : - Текстовый формат - Нет распределенности (HTTP-NG)
СТРУКТУРА ПРОТОКОЛА Стартовая строка (Starting line) задает тип сообщения ; Заголовки (Headers) характеризуют тело сообщения, параметры передачи и прочие сведения ; Тело сообщения (Message Body) непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой.
СТАРТОВАЯ СТРОКА Запрос ( клиент ): Метод URI HTTP/ Версия GET /spbau/antonk HTTP/1.0 Ответ ( сервер ) HTTP/ Версия КодСостояния Пояснение HTTP/ Moved Permanently
МЕТОДЫ Каждый сервер обязан поддерживать как минимум методы GET и HEAD Ошибки : 501 (Not Implemented) 405 (Method Not Allowed) В обоих случаях в ответ включается заголовок Allow со списком поддерживаемых методов Основные методы : GET, HEAD, POST
МЕТОДЫ OPTIONS GET ( идемпотентный ) HEAD POST PUT, PATCH, DELETE, TRACE, LINK, UNLINK, CONNECT…
КОДЫ СОСТОЯНИЯ 1 хх – информационные 2 хх – успех 3 хх – перенаправление 4 хх – ошибка клиента (403, 404) 5 хх – ошибка сервера (503)
ЗАГОЛОВКИ Все заголовки разделяются на четыре основных группы : General Headers включаются в любое сообщение Request Headers только в запросах клиента. Response Headers только для ответов от сервера. Entity Headers сопровождают каждую сущность сообщения.
ЗАГОЛОВКИ Пример : Server: Apache/ (Win32) PHP/5.3.0 Last-Modified: Sat, 16 Jan :16:42 GMT Content-Type: text/plain; charset=windows-1251 Content-Language: ru
ПРИМЕР Запрос : GET /index.html HTTP/1.1 Host: ya.ru User-Agent: Mozilla/7.0 Accept: text/html Connection: close ( пустая строка )
ПРИМЕР Ответ : HTTP/ OK Date: Fri, 11 Nov :20:59 GMT Server: Apache X-Powered-By: PHP/ ubuntu5wm1 Last-Modified: Wed, 11 Feb :20:59 GMT Content-Language: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close ( далее следует запрошенная страница в HTML)