手动编写HTTP预告片头

时间:2018-05-11 19:25:29

标签: http http-headers httpresponse http-error

这个问题的动机来自这里的答案: What to do with errors when streaming the body of an Http request

在这种情况下,我已经编写了一个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 :(得分:2)

首先:

  

我认为这是跟踪标题的相关规范: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适用于content codings(如gzip),不适用于字符集(如UTF-8)。您可能不需要单独指出charset Content-Type

最后:

  

如何为浏览器可以很好地显示的响应编写有用的路径标头?

你没有。主流Web浏览器不关心预告片。

另请参见(由同一位用户?):How to write malformed HTTP response to “guarantee” something akin to HTTP 500