这个问题的动机来自这里的答案: 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
我认为它们应该被称为“尾随标题”,但无论如何。
答案 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