Назад | Перейти на главную страницу

Какие методы HTTP сервер обычно использует в ответе (если есть)

Я понимаю, как выглядят HTTP-запросы со стороны клиента, но мне интересно, какие методы сервер использует для возврата страниц?

Клиент:

GET /index.html HTTP/1.1
Host foo.com:80

Сервер:

Does it perform an HTTP PUT of index.html ?  If not, then what?  Are HTTP methods used both ways?

Если в ответе не используются методы HTTP, то это просто пакет TCP (или несколько), содержащий полезную нагрузку? Есть ли в пакетах какая-либо информация, относящаяся к протоколу HTTP?

HTTP-запрос можно отправить одним из следующих способов:

> Получить ()

Выдает HTTP-запрос GET. Этот метод заставляет веб-сервер возвращать запрошенную страницу.

> Голова ()

Выдает HTTP-запрос HEAD. Этот метод заставляет веб-сервер возвращать только заголовки ответа, но не тело.

> Опубликовать ()

Выдает HTTP-запрос POST. Используйте этот метод для отправки данных на веб-сервер, например результатов формы, или загрузки файла.

> Положите ()

Выдает HTTP-запрос PUT. Используйте этот метод для загрузки данных на веб-сервер. Запросы PUT встречаются нечасто.

> Отправить ()

Отправляет указанный тип HTTP-запроса на сервер.


После получения и интерпретации сообщения запроса сервер отвечает сообщением ответа HTTP.

   Response      = Status-Line               ; Section 6.1
                   *(( general-header        ; Section 4.5
                    | response-header        ; Section 6.2
                    | entity-header ) CRLF)  ; Section 7.1
                   CRLF
                   [ message-body ]          ; Section 7.2

Информация для ответа была процитирована со следующего сайта: W3.org

Я отвечу на свой вопрос. Нет, методы HTTP используются только в заголовках запросов. Коды состояния используются в заголовках ответов. Я знаю, что просмотрел заголовки с обеих сторон и должен был сказать это, не просматривая его, но я не был уверен. Выгода от задания такого вопроса (который довольно легко найти) на полезном форуме заключается в том, что иногда вы узнаете что-то дополнительное или получаете некоторую перспективу, которая помогает углубить ваше понимание.

Первый

Ваш запрос должен соответствовать протоколу HTTP.

IE ваш заголовок должны заканчиваться пустой строкой:

GET /index.html HTTP/1.1
Host foo.com:80
 

Примечание: каждая строка должна заканчиваться CRLF, не только LF ни только CR:

00000000  47 45 54 20 2f 20 48 54  54 50 2f 31 2e 30 5c 72  |GET / HTTP/1.0\r|
00000010  5c 6e 48 6f 73 74 3a 20  66 6f 6f 2e 63 6f 6d 3a  |\nHost: foo.com:|
00000020  38 30 5c 72 5c 6e 5c 72  5c 6e 0a                 |80\r\n\r\n.|

Ответ сервера может соответствовать той же форме:

Заголовок - Пустая строка - Тело

Таким образом, вы можете удалить заголовок, используя sed, для образца:

nc foo.com 80 <<<$'GET / HTTP/1.0\r\nHost: foo.com:80\r\n\r' |
    sed '1,/^\r\?$/d' > index-of-foo.com.html

Или выгрузить только заголовок:

nc foo.com 80 <<<$'GET / HTTP/1.0\r\nHost: foo.com:80\r\n\r' |
    sed '/^\r\?$/q'

Вы можете найти весь свой ответ в Интернете:

Первый справочный документ: на w3.org

Или в Википедии: http в Википедии

Какой способ ответить?

Заголовок ответа действительно содержит всю необходимую информацию для понимания того, что делать с ответом.

По сути, есть Тип содержимого, необходим, чтобы сообщить вашему браузеру, что с этим делать.

Серверу может потребоваться обработать некоторые данные для построения своего ответа, но между сервером и клиентом существует только одно (глупое) TCP-соединение.

Сервер ничего не может попросить клиента сделать ...

За исключением интерактивных конструкций между стеком обработки высокого уровня, например javascript, html5 (css), Ява, вспышка или другой Dilbertlight.