如何从node.js中的Http.IncomingMessage中检测http vs https
给定由http(s).Server
Http.IncomingMessage
创build的Http.IncomingMessage
响应请求什么是正确的/推荐的方式来检测请求是http还是https?
一些我不知道的随机想法是正确的
-
检查端口
// seems wrong - might be using a different port const isHTTPS = req.socket.address().port === 443;
-
检查套接字是否有证书
// does no cert mean it wasn't https? const isHTTPS = req.socket.getPeerCertificate && request.socket.getPeerCertificate() !== null;
-
检查套接字是否具有函数
getPeerCertificate
// does no func = !https? const isHTTPS = req.socket.getPeerCertificate !== undefined;
-
检查套接字是否是
tls.TLSSocket
const tls = require('tls'); const isHTTPS = req.socket instanceof tls.TLSSocket;
-
其他?
对于HTTPS连接, req.socket
将有一个名为encrypted
的属性设置为true
。