📅  最后修改于: 2023-12-03 15:17:54.828000             🧑  作者: Mango
在Node.js中,Http2ServerRequest
类是一个表示HTTP/2请求的类, 通过该类可以处理接收到的HTTP/2请求。其中,scheme
方法是其中之一。
scheme
方法用于获取HTTP/2请求的协议名,一般为https
。该方法返回一个字符串,表示请求的协议名。
request.scheme
const http2 = require('http2');
const { readFileSync } = require('fs');
const options = {
key: readFileSync('localhost-privkey.pem'),
cert: readFileSync('localhost-cert.pem')
};
const server = http2.createSecureServer(options);
server.on('stream', (stream, headers) => {
console.log(`Protocol: ${stream.session.originSetFor(headers[':authority']).has('h2') ? 'HTTP2' : 'HTTPS'}`); // 判断请求的协议类型
console.log(`Scheme: ${stream.request.scheme}`); // 获取请求的协议名
stream.respond({
'content-type': 'text/html',
':status': 200
});
stream.end('<h1>Hello World</h1>');
});
server.listen(443);
上述示例中,在接收到HTTP/2请求时,可以通过scheme
方法获取请求的协议名,并打印在控制台上。
输出:
Protocol: HTTPS
Scheme: https
scheme
方法只适用于HTTP/2请求,不适用于HTTP/1.x的请求。如果需要处理HTTP/1.x的请求,建议使用HttpServerRequest.connection.encrypted
属性来判断请求是否加密。