Ответ 1
Это зависит от того, что вы определяете как требуемого: нет полей заголовка, которые должны быть отправлены с каждым ответом независимо от обстоятельств, но есть поля заголовков, которые вы действительно должны отправлять. Единственное заголовочное поле, которое близко, Date
, но даже имеет обстоятельства, при которых это не требуется.
В выражении RFC 2119 термин ДОЛЖЕН означает, что что-то является требованием спецификации, а не выполнение этого требования будет недействительным. Нет полей заголовка, определенных RFC 7230, 7231, 7232, 7233, 7234 или 7235, что MUST должен быть отправлен сервером происхождения во всех случаях.
Следующие заголовки, например, могут быть опущены (хотя вы, вероятно, должны их отправить):
7.1.1.2. Дата
Исходный сервер НЕ ДОЛЖЕН отправлять поле заголовка
Date
, если оно не имеют часы, способные обеспечить разумную аппроксимацию текущий экземпляр в скоординированном универсальном времени. Сервер происхождения MAY отправьте поле заголовкаDate
, если ответ находится в 1xx (Информационный) или 5xx (серверная ошибка) класса кодов состояния. исходный сервер ДОЛЖЕН отправить поле заголовкаDate
во всех других случаях.
Обратите внимание на последнее предложение цитаты. Поле заголовка Date
MUST должно быть отправлено, если исходный сервер способен обеспечить "разумную аппроксимацию" даты в UTC, но нет ничего, что помешало бы серверу исказить себя.
7.4.2. Сервер
Исходный сервер МОЖЕТ генерировать поле
Server
в своих ответах.
3.3.2. Content-Length
Помимо [конечного числа предопределенных случаев], в отсутствие
Transfer-Encoding
, сервер происхождения СЛЕДУЕТ отправить aContent-Length
заголовок, когда размер тела полезной нагрузки известен до отправки полная секция заголовка.
В отношении Content-Length
и Transfer-Encoding
обратите внимание, что ни одно из них не может быть отправлено, и в этом случае длина ответа "определяется количеством октетов, полученных до сервера, закрывающего соединение".
3.1.1.5. Content-Type
Если поле заголовка
Content-Type
отсутствует, получатель МОЖЕТ либо предположить тип носителяapplication/octet-stream
(RFC2046, раздел 4.5.1) или проанализировать данные для определения его типа.
Существуют обстоятельства, при которых могут потребоваться определенные заголовки, например:
- Сервер происхождения, который не поддерживает постоянные соединения MUST, отправляет
Connection: close
в каждом ответе, который не имеет статуса 1xx код. - Исходный сервер MUST генерирует заголовок
Allow
в ответе 405 (метод не разрешен). - Исходный сервер, генерирующий ответ 401 (неавторизованный) MUST, отправляет поле заголовка
WWW-Authenticate
, содержащее хотя бы один вызов.