📅  最后修改于: 2023-12-03 15:17:54.949000             🧑  作者: Mango
Node.js 中的 http2stream.sentInfoHeaders 方法可用于发送 HTTP/2 流的元数据帧(info frame)。这些帧被用于传递与请求或响应相关的元信息,如 HTTP 标头或 Cookie、验证信息等。此方法通常被用于发送响应头信息。
stream.sentInfoHeaders(headers, [flags]);
headers
:Object 类型,HTTP/2 响应头信息。flags
:Number 类型,可选的传输标志。以下示例展示了如何使用 http2stream.sentInfoHeaders 方法发送 HTTP/2 响应头信息:
const http2 = require('http2');
const server = http2.createServer();
server.on('stream', (stream, headers) => {
const responseHeaders = {
':status': 200,
'content-type': 'application/json',
};
stream.sentInfoHeaders(responseHeaders);
stream.end(JSON.stringify({ message: 'Hello World!' }));
});
server.listen(3000);
在该示例中,当有新的 HTTP/2 流被创建时,服务器会对其进行响应。首先,一个包含 HTTP/2 响应头信息的对象被创建,其中包括响应状态码(':status'
)和 content-type
标头。然后,http2stream.sentInfoHeaders
方法被使用来发送这些响应头信息。最后,响应的主体内容被发送并该流被终止。
http2stream.sentInfoHeaders 方法的第二个参数 flags
为可选的传输标志。例如,使用 Http2Constants 中的 NGHTTP2_FLAG_PRIORITY
标志可以使响应优先级更高。标志默认为 0。
以下是一些可用标志的列表:
NGHTTP2_FLAG_END_STREAM
:指示数据流结束。NGHTTP2_FLAG_END_HEADERS
:表示该数据帧包含头部块的最后一个片段。NGHTTP2_FLAG_PRIORITY
:表示这个帧是有优先级的。NGHTTP2_FLAG_PADDED
:表示这个帧后面加有填充。NGHTTP2_FLAG_COMPRESSED
:表示这个帧使用了压缩。注意, http2stream.sentInfoHeaders
方法仅能被在初始 HTTP/2 标头帧(HEADERS frame),或从 HEADERS frame 衍生出来的 CONTINUATION frame 上调用。因此,该方法应当被用于响应头部帧(response header frames),而不应当被用于请求头部帧(request header frames)。
http2stream.sentInfoHeaders 方法可用于发送 HTTP/2 流的元数据帧,如响应头信息。 此方法采用对象形式传递头信息和标志。此方法应在响应头部帧上调用,并可传入可选的传输标志。