Ответ
При использовании протокола HTTPS (HTTP Secure) шифруется практически весь HTTP-запрос. TLS-шифрование применяется ко всему пакету данных HTTP после установления безопасного соединения.
Шифрованию подвергаются:
- Стартовая строка (Start-line): метод (
GET
,POST
), запрашиваемый путь (/users?id=123
) и версия протокола (HTTP/1.1
). - Заголовки (Headers): все заголовки, включая
Host
,User-Agent
,Accept
,Authorization
и, что особенно важно,Cookie
. - Тело запроса (Body): все данные, передаваемые в теле, например, JSON в POST-запросе.
Важное исключение: Доменное имя в SNI
Единственная критически важная часть, которая передается в открытом виде до установления шифрования — это имя хоста в расширении SNI (Server Name Indication) во время TLS-рукопожатия (handshake).
- Зачем это нужно? Это позволяет серверу, который обслуживает множество сайтов на одном IP-адресе, понять, какой именно SSL/TLS-сертификат ему нужно предоставить клиенту.
- Что это значит на практике? Сетевой наблюдатель (например, интернет-провайдер) может видеть, к какому домену (
example.com
) вы подключаетесь, но не видит полный URL (/private/data
), заголовки или содержимое вашего запроса.
Итог: Шифруется всё, что находится внутри HTTP-сообщения. Информация, необходимая для маршрутизации и установления самого зашифрованного канала (как имя хоста в SNI), остается видимой.