手动编写 HTTP 尾部 headers

Write HTTP trailer headers manually

这个问题是由这里的答案引起的:

在这种情况下,我已经写了一个 HTTP 200 OK header,如果有错误,我需要修改这个,写一个 trail header 说有一个错误after写入成功header.

我有这个 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')

    });

}

如何将有用的跟踪 header 写入浏览器可以很好显示的响应?

我认为这是 trail headers 的相关规范: https://www.rfc-editor.org/rfc/rfc2616#section-14.40

我认为它们应该被称为“尾随 headers”,但无论如何。

首先:

I think this is the relevant spec for trail headers: https://www.rfc-editor.org/rfc/rfc2616#section-14.40

RFC 2616 已被 RFC 7230. The current spec for trailers is RFC 7230 § 4.1.2 废弃。

其次:

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

HTTP 消息框架中的行以 \r\n 结束,而不是 \n

第三:

Content-Encoding: UTF-8

Content-Encoding 适用于 content codings(如 gzip),而不是字符集(如 UTF-8)。您可能不需要与 Content-Type.

分开指示字符集

最后:

how do I write a useful trail header to the response that can be displayed well by the browser?

你不知道。主流 Web 浏览器不关心预告片。

另见(同一用户?):