1

Я пытаюсь понять, почему один HTTP-ответ делится на 2 части в следующей настройке:

  • Запрашиваемый ресурс защищен дайджест-аутентификацией HTTP на стороне сервера.
  • Связь осуществляется с использованием TLS 1.0.

Когда клиент запрашивает ресурс, ответ сервера делится на 2 части: первая часть (после расшифровки) содержит только заголовки HTTP (помимо прочего):

Content-Length: 1297
а также
WWW-Authenticate: ...
Вторая часть содержит текст сообщения.

Самое главное: эта первая часть, содержащая только заголовки, отправляется с флагом PSH, что приводит к тому, что мое приложение выдает исключение, поскольку Content-Length> 0, но сообщения тела нет. Последний пакет второй части не имеет флага PSH.

Это поведение сервера правильно?

1 ответ1

2

Ваше приложение, вероятно, не знает, что TCP является протоколом, основанным на потоке, а не на пакетах. Нет гарантии, что вы получите заголовок и тело вместе в одном пакете, даже нет гарантии, что вы получите весь заголовок внутри одного пакета.

Кроме того, ответ содержит основные части: контент и информацию о контенте (тип, длина, последнее изменение ...). Есть несколько способов различить эти части и разделить их на заголовок, содержащий метаинформацию, и тело, содержащее контент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .