1

Мне интересно, как клиент, который запросил веб-страницу, например, запрос на получение, точно знает, когда он получил все запрошенные данные и что больше нет данных, которые можно было бы использовать с примерами https и http?

Спасибо

2 ответа2

2

Нет разницы между HTTP и HTTPS, поскольку HTTPS - это просто HTTP, туннелируемый через туннель TLS.

Чтобы ответить на ваш вопрос: если сервер отправляет заголовок Content-Lenght: x , то тело ответа должно быть точно размером x октетов (байтов). Если сервер не отправляет этот заголовок, он изменяется:

для HTTP 1.0 тело ответа определенно завершается после того, как сервер закрывает соединение. Для HTTP 1.1 это сложнее, потому что сервер может использовать кусочную кодировку: http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.3.6.1

1

Ссылочный пример HTTP Exchange

Образец HTTP Exchange

Чтобы получить файл по URL

http://www.somehost.com/path/file.html

сначала откройте сокет для хоста www.somehost.com, порт 80 (используйте порт по умолчанию, равный 80, поскольку ни один из них не указан в URL). Затем отправьте что-то вроде следующего через сокет:

GET /path/file.html HTTP/1.0
From: someuser@jmarshall.com
User-Agent: HTTPTool/1.0
[blank line here]

Сервер должен ответить примерно следующим образом, отправленным через тот же сокет:

HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/html
Content-Length: 1354

<html>
<body>
<h1>Happy New Millennium!</h1>
(more file contents)
  .
  .
  .
</body>
</html>

После отправки ответа сервер закрывает сокет.

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