Написать заголовки трейлера HTTP вручную - PullRequest
0 голосов
/ 11 мая 2018

Этот вопрос был мотивирован ответами здесь: Что делать с ошибками при потоковой передаче тела запроса Http

В этом случае я уже написал заголовок HTTP 200 OK, затем мне нужно исправить это, если есть ошибка, написав заголовок журнала, который говорит, что произошла ошибка после успешной записи заголовок.

У меня есть этот код Node.js:

const writeResponse = function(file: string, socket: Socket){

   socket.write([
    'HTTP/1.1 200 OK',
    'Content-Type: text/javascript; charset=UTF-8',
    'Content-Encoding: UTF-8',
    'Accept-Ranges: bytes',
    'Connection: keep-alive',
   ].join('\n') + '\n\n');

  getStream(file)
    .pipe(socket)  
    .once('error', function (e: any) {

        // there was an error
        // how can I write trail headers here ?

        s.write('some bad shit happened\n')

    });

}

как мне написать полезный заголовок следа для ответа, который может хорошо отображаться браузером?

Я думаю, что это актуальная спецификация для заголовков трасс: https://tools.ietf.org/html/rfc2616#section-14.40

Я думаю, их следует называть "конечными заголовками", но как угодно.

1 Ответ

0 голосов
/ 12 мая 2018

Во-первых:

Я думаю, что это актуальная спецификация для заголовков следа: https://tools.ietf.org/html/rfc2616#section-14.40

RFC 2616 устарел RFC 7230 .Текущая спецификация для прицепов: RFC 7230 § 4.1.2 .

Во-вторых:

].join('\n') + '\n\n'

Строки вФрейм HTTP-сообщения заканчивается \r\n, а не \n.

В-третьих:

Content-Encoding: UTF-8

Content-Encoding для кодировки контента (например, gzip), а не кодировки (например, UTF-8).Вам, вероятно, не нужно указывать кодировку отдельно от Content-Type.

И наконец:

как мне написать полезный заголовок трейла в ответ, который может быть хорошо отображенбраузер?

Нет.Основные веб-браузеры не заботятся о трейлерах.

См. Также (того же пользователя?): Как написать некорректный HTTP-ответ, чтобы «гарантировать» что-то похожее на HTTP 500

...