LINUX.ORG.RU

Какие http-заголовки являются обязательными?

 


0

1

Вот например, Date, зачем я его буду отдавать? сервер ведь каждый раз напрягается, вычисляя дату, а какой толк в этом? Не отдал и не отдал, клиенту же срать на это. В общем, хотелось бы знать минимум, чтобы не повредить ресурсу.

Ответ на: комментарий от ambiguousnick

Если указать keep-alive, сервер скорее всего не станет разрывать соединение с клиентом. В противном случае скорее всего разорвет.

AFAIK обязательна только первая строка запроса (GET/ POST/etc.).

staseg ★★★★★
()
Ответ на: комментарий от staseg

сервер скорее всего не станет разрывать соединение с клиентом

может наоборот, клиент с сервером? сервер то тут причем, как он может зависеть от своего ответа клиенту?

ambiguousnick
() автор топика

IIRC для HTTP/1.0 вообще никакие не обязательны.

Для HTTP/1.1 (и с vhosting) — как минимум Host.

beastie ★★★★★
()
Ответ на: комментарий от staseg

GET/ POST/etc.

так это же строка запроса, клиентская строка, а не серверная. Сервер первой строкой шлет HTTP1.1 200 Ok, например.

ambiguousnick
() автор топика
Ответ на: комментарий от staseg

Да, сорри, я не особо внятно написал. Собственно, на клиентские запросы мы повлиять все равно не можем, поэтому, как бы, о серверных, само-собой.

ambiguousnick
() автор топика
Ответ на: комментарий от ambiguousnick

может наоборот, клиент с сервером? сервер то тут причем, как он может зависеть от своего ответа клиенту?

Сервер может отдать ответ и закрыть соединение. Но я ошибся, по спеке http/1.1 сервер не должен закрывать соединение, если явно не указан connection: close.

staseg ★★★★★
()
Ответ на: комментарий от ambiguousnick

Сервер должен отдать статус, остальное не обязательно.

staseg ★★★★★
()
Ответ на: комментарий от staseg

А что представляет из себя «закрытие» соединения с технической точки зрения? Что серверное приложение делает, чтобы закрыть соединение или оставить?

ambiguousnick
() автор топика
Ответ на: комментарий от staseg

Я, таки, нифига не понял. Клиент мне шлет заголовок keep-alive. Я ему шлю ответ. Какой смысл дальше открытым сокет держать? Клиент получил что хотел, до свиданья. Может имеется в виду, что если клиент прислал close, значит этот запрос не требует ответа? можно сразу зкрывать сокет, и обрабатывать дальше его запрос, может в этом смысле?

ambiguousnick
() автор топика
Ответ на: комментарий от ambiguousnick

Клиент мне шлет заголовок keep-alive. Я ему шлю ответ. Какой смысл дальше открытым сокет держать?

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

annulen ★★★★★
()
Ответ на: комментарий от ambiguousnick

если клиент прислал close, значит этот запрос не требует ответа?

Чушь. Читай RFC до просветления

annulen ★★★★★
()
Ответ на: комментарий от annulen

Да мало ли, что он сказал. Так при большой нагрузке сервер полетит нахрен. Сколько одновременно открытых сокетов допускается?

ambiguousnick
() автор топика
Ответ на: комментарий от annulen

Ты в курсах, вообще, что современные клиенты всегда шлют keep-alive? Если ты не закрываешь сразу после ответа, то когда закрывать? Когда рак на горе свистнет?

ambiguousnick
() автор топика
Ответ на: комментарий от ambiguousnick

Когда рак на горе свистнет?

Как-то так. Многие серверы закрывают соединение по прошествии определенного времени после последнего запроса и/или после обработки N запросов в одном соединении.

annulen ★★★★★
()
Ответ на: комментарий от ambiguousnick

Смысл в том, чтобы не переоткрывать соединение кучу раз. Судя по всему по умолчанию предполагается, что клиент запросит страницу, распарсит ее и полезет на твой же сервер за прочим контентом: картинками, скриптами, css и т.д. Через какой-то таймаут, секунд 30, соединение можно разорвать, веб сервера обычно так и делают, клиенты это нормально обрабатывают.

staseg ★★★★★
()
Ответ на: комментарий от staseg

TCP_NODELAY

Этим надо пользоваться, когда знаешь, что делаешь (оп точно не относится к этой категории)

annulen ★★★★★
()
Ответ на: комментарий от ambiguousnick

Сколько одновременно открытых сокетов допускается?

Зависит от ОС и настройки лимитов

annulen ★★★★★
()
Ответ на: комментарий от ambiguousnick

Ты в курсах, вообще, что современные клиенты всегда шлют keep-alive?

В HTTP/1.1 это вообще дефолтное значение

annulen ★★★★★
()

Зависит от версии, сходи почитай стандарт.

Deleted
()

Де-юре никакие. Де-факто статус. Смысл вообще отвечать если ты даже статус не передаешь?

Suntechnic ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.