Шрифт:
POST
Добавить к веб-странице
PUT
Сохранить веб-страницу
DELETE
Удалить веб-страницу
TRACE
Отобразить входящий запрос
CONNECT
Подключиться через прокси
OPTIONS
Параметры запроса страницы
Илл. 7.25. Встроенные методы HTTP-запросов
Метод HEAD запрашивает только заголовок сообщения, без самой страницы. С его помощью можно собрать индексную информацию или просто проверить работоспособность URL-адреса.
Метод POST используется при подтверждении формы. Как и GET, он использует URL-адрес, но вместо простого извлечения страницы загружает данные (то есть содержимое формы или параметры) на сервер. Сервер выполняет над данными некое действие, которое зависит от URL-адреса, фактически добавляя их к объекту. В итоге происходит покупка указанного товара или вызов необходимой процедуры. Наконец, метод возвращает страницу с сообщением об этом результате.
Другие методы редко используются при просмотре веб-страниц. Метод PUT является противоположностью метода GET: он не читает, а записывает страницу. PUT позволяет создать набор веб-страниц на удаленном сервере. При этом тело запроса содержит страницу. Она может быть закодирована согласно стандарту MIME. В этом случае строки, следующие за командой PUT, могут содержать заголовки аутентификации, подтверждающие, что абонент обладает правами доступа к запрашиваемой операции.
Метод DELETE, как ни удивительно, удаляет страницу или, по крайней мере, сообщает, что веб-сервер дал согласие на ее удаление. Как и с методом PUT, важную роль здесь играет аутентификация и права доступа.
Метод TRACE предназначен для отладки. Он приказывает серверу отослать запрос обратно. Этот метод особенно полезен, когда запросы обрабатываются некорректно и клиенту необходимо узнать, какой именно запрос получает сервер.
Метод CONNECT предоставляет пользователю возможность подключиться к серверу через промежуточное устройство, такое как веб-кэш.
Метод OPTIONS позволяет клиенту запросить у сервера информацию о том, какие методы и заголовки можно использовать на указанной странице.
В ответ на каждый запрос включается строка состояния, часто вместе с дополнительной информацией (например, веб-страница целиком или ее часть). Эта строка может содержать трехразрядный код состояния, сообщающий об успешном выполнении запроса или о причинах неудачи. Первый разряд предназначен для разделения всех ответов на пять основных групп, перечисленных на илл. 7.26.
Код
Значение
Примеры
1xx
Информация
100 = сервер согласен обрабатывать запросы клиента
2xx
Успех
200 = запрос успешно обработан; 204 = содержимое отсутствует
3xx
Перенаправление
301 = страница перемещена; 304 = кэшированная страница все еще доступна
4xx
Ошибка клиента
403 = ошибка доступа; 404 = страница не найдена
5xx
Ошибка сервера
500 = внутренняя ошибка сервера; 503 = попробуйте еще раз позднее
Илл. 7.26. Группы кодов состояния, содержащиеся в ответах сервера
Коды, начинающиеся с 1 (1xx), на практике используются редко. Коды 2xx означают, что запрос был обработан успешно и данные (если их запрашивали) возвращены. Коды 3xx сообщают клиенту о том, что нужно попытать счастья в другом месте — используя либо другой URL, либо свой собственный кэш (мы обсудим его далее). Коды 4xx означают, что запрос по какой-либо причине, связанной с клиентом, потерпел неудачу: например, запрошена несуществующая страница или сам запрос некорректен. Наконец, коды 5xx сообщают о внутренних ошибках сервера, возникших из-за ошибки программы или временной перегрузки.
Заголовки сообщений
За строкой запроса (к примеру, содержащей метод GET) могут следовать другие строки с дополнительной информацией. Они называются заголовками запросов (request headers). Эти сведения можно сравнить с параметрами вызова процедуры. В свою очередь, ответы могут содержать заголовки ответов (response headers). Некоторые заголовки встречаются и там и там. Наиболее важные из них перечислены на илл. 7.27. Это длинный список, и как вы понимаете, каждый запрос и ответ может содержать целый набор заголовков.
Заголовок
Тип
Содержимое
User-Agent
Запрос
Информация о браузере и его платформе
Accept
Запрос
Тип страниц, поддерживаемых клиентом
Accept-Charset
Запрос
Поддерживаемые клиентом наборы символов
Accept-Encoding
Запрос
Поддерживаемые клиентом типы кодирования
Accept-Language
Запрос
Естественные языки, доступные клиенту
If-Modified-Since
Запрос
Время и дата последнего обновления
If-None-Match
Запрос
Теги, отправленные с последнего обновления
Host
Запрос
DNS-имя сервера
Authorization
Запрос
Список персональных идентификаторов клиента
Referer
Запрос
URL, с которого был отправлен предыдущий запрос
Cookie
Запрос
Отправка ранее принятого cookie-файла на сервер
Set-Cookie
Ответ
Сервер хочет, чтобы клиент сохранил cookie
Server
Ответ
Информация о сервере