Поиск…


параметры

Метод HTTP Цель
OPTIONS Получить информацию об опциях связи (доступных методах и заголовках), доступных в указанном URI запроса.
GET Получить данные, идентифицированные URI запроса, или данные, созданные скриптом, доступным в URI запроса.
HEAD Идентично GET за исключением того, что сервер сообщений не будет возвращен никакому телу сообщения: только заголовки.
POST Отправьте блок данных (указанный в теле сообщения) на сервер для добавления к ресурсу, указанному в URI запроса. Наиболее часто используется для обработки формы.
PUT Храните закрытую информацию (в теле сообщения) в качестве нового или обновленного ресурса в соответствии с данным URI запроса.
DELETE Удалить или очередь для удаления, ресурс, идентифицированный URI запроса.
TRACE По сути, команда echo: работающий, совместимый HTTP-сервер должен отправить весь запрос обратно в качестве тела ответа 200 (OK).

замечания

Метод CONNECT зарезервирован спецификацией определений методов для использования с прокси-серверами, которые могут переключаться между режимами проксирования и туннелирования (например, для туннелирования SSL).

Отправка минимального HTTP-запроса вручную с помощью Telnet

Этот пример демонстрирует, что HTTP является текстовым протоколом интернет-связи и показывает базовый HTTP-запрос и соответствующий HTTP-ответ.

Вы можете использовать Telnet для ручной отправки минимального HTTP-запроса из командной строки, как показано ниже.

  1. Запустите сеанс Telnet на веб-сервере www.example.org на порту 80:

    telnet www.example.org 80
    

    Telnet сообщает, что вы подключились к серверу:

    Connected to www.example.org.
    Escape character is '^]'.
    
  1. Введите строку запроса, чтобы отправить URL-адрес URL-адреса запроса GET / , используя HTTP 1.1

    GET / HTTP/1.1
    
  2. Введите строку поля заголовка HTTP, чтобы определить часть имени хоста требуемого URL-адреса, которая требуется в HTTP 1.1

    Host: www.example.org
    
  3. Введите пустую строку для завершения запроса.

    Веб-сервер отправляет HTTP-ответ, который появляется в сеансе Telnet.

Полный сеанс выглядит следующим образом. Первая строка ответа - это строка состояния HTTP , которая включает в себя код состояния 200 и текст состояния « ОК» , которые указывают, что запрос был успешно обработан. За ним следуют несколько полей заголовка HTTP, пустая строка и ответ HTML.

$ telnet www.example.org 80
Trying 2606:2800:220:1:248:1893:25c8:1946...
Connected to www.example.org.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.example.org

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html
Date: Thu, 21 Jul 2016 15:56:05 GMT
Etag: "359670651"
Expires: Thu, 28 Jul 2016 15:56:05 GMT
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
Server: ECS (lga/1318)
Vary: Accept-Encoding
X-Cache: HIT
x-ec-custom-error: 1
Content-Length: 1270

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>

(элемент style и пустые строки удалены из ответа HTML для краткости.)

Основной формат запроса

В HTTP 1.1 минимальный HTTP-запрос состоит из строки запроса и заголовка Host :

GET /search HTTP/1.1 \r\n
Host: google.com \r\n
\r\n

Первая строка имеет такой формат:

Method Request-URI HTTP-Version CRLF

Method должен быть допустимым методом HTTP; один из [1] [2] :

  • OPTIONS
  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • PATCH
  • TRACE
  • CONNECT

Request-URI указывает либо URI, либо путь к ресурсу, который запрашивает клиент. Это может быть:

  • полный URI, включая схему, хост, (необязательный) порт и путь; или же
  • путь, в этом случае хост должен быть указан в заголовке Host

HTTP-Version указывает версию HTTP-протокола, который использует клиент. Для HTTP 1.1 запросов это всегда должно быть HTTP/1.1 .

Линия запроса заканчивается парой обратной линии возврата каретки, обычно представленной \r\n .

Поля заголовка запроса

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

Запрос с заголовками Host , User-Agent и Referer может выглядеть следующим образом:

GET /search HTTP/1.1 \r\n
Host: google.com \r\n
User-Agent: Chrome/54.0.2803.1 \r\n
Referer: http://google.com/ \r\n
\r\n

Полный список поддерживаемых заголовков запросов HTTP 1.1 можно найти в спецификации . Наиболее распространенными являются:

  • Host - часть имени хоста URL-адреса запроса (требуется в HTTP / 1.1)
  • User-Agent - строка, представляющая запрос агента пользователя;
  • Referer - URI, от которого сюда ссылался клиент; а также
  • If-Modified-Since - указывает дату, которую сервер может использовать, чтобы определить, изменился ли ресурс, и указать, что клиент может использовать кешированную копию, если она не указана.

Заголовок должен быть сформирован как Name: Value CRLF . Name - это имя заголовка, например User-Agent . Value - это назначенные ему данные, и строка должна заканчиваться CRLF. Имена заголовков нечувствительны к регистру и могут использовать только буквы, цифры и символы !#$%&'*+-.^_`|~ (RFC7230 раздел 3.2.6 Компоненты значения поля ).

Имя поля заголовка Referer является опечаткой для «referrer», введенной случайно в RFC1945 .

Органы сообщения

Некоторые HTTP-запросы могут содержать тело сообщения. Это дополнительные данные, которые сервер будет использовать для обработки запроса. Органы сообщения чаще всего используются в сообщениях POST или PATCH и PUT для предоставления новых данных, которые сервер должен применять к ресурсу.

Запросы, которые включают тело сообщения, должны всегда включать его длину в байтах с заголовком Content-Length .

Тело сообщения включено после всех заголовков и двойной CRLF. Пример запроса PUT с телом может выглядеть так:

PUT /files/129742 HTTP/1.1\r\n
Host: example.com\r\n
User-Agent: Chrome/54.0.2803.1\r\n
Content-Length: 202\r\n
\r\n
This is a message body. All content in this message body should be stored under the 
/files/129742 path, as specified by the PUT specification. The message body does
not have to be terminated with CRLF.

Запросы HEAD и TRACE не должны содержать тело сообщения.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow