Да, можно разбить байты, соответствующие одному HTTP-заголовку, на 2 (или более) кадра.
Вы кодируете заголовки HTTP в байты через HPACK, так что теперь у вас есть только byte[]
.
Давайте предположим, что byte[]
имеет длину 23.
Вы можете создать кадр HEADERS
с флагами end_headers=false
и поместить в него, например, 13 из 23 байтов.
Затем вы создаете кадр CONTINUATION
с флагами end_headers=true
и помещаете в него оставшиеся 10 байтов.
Это совершенно непрозрачно, когда вы разделяете byte[]
.
Важно то, что кадры HEADERS
и CONTINUATION
должны отправляться один за другим, без других кадров между ними.
Принимающая сторона увидит кадр HEADERS
с end_headers=false
, извлечет 13 байтов и отложит их в сторону, ожидая кадра CONTINUATION
.
Когда приходит кадр CONTINUATION
, принимающая сторона извлекает 10 байтов, объединяет их с предыдущими 13, чтобы получить копию исходных 23 байтов, которые теперь могут быть декодированы через HPACK, с получением оригинальных заголовков HTTP.