如何知道node.js中的请求是http还是https
我正在使用nodejs和expressjs。我想知道request.headers.protocol
clientRequest对象中是否有类似的东西。我想为Web链接构建baseUrl。因此,如果请求是通过https完成的,我想在所有链接中保留https。
var baseUrl = request.headers.protocol + request.headers.host;
回答:
对于Express,它更安全,建议使用req.secure
(如@Andy在下面建议)。尽管它使用类似的实现,但将来可以安全使用,并且还可以选择支持X-Forwarded-
Proto标头。
话虽如此,对于您的用例而言,使用Express的req.protocol
属性(http
或)会更快https
。但是请注意,对于传出链接,您只能参考//example.com/path
,浏览器将使用当前协议。
对于Request
不带Express的节点对象:
在req.connection.secure
(布尔值)中。
对于 ,API已更改:
HTTPS连接具有req.connection.encrypted
(一个具有SSL连接信息的对象)。HTTP连接没有req.connection.encrypted
。
另外(来自docs):
有了HTTPS支持,请使用request.connection.verifyPeer()和request.connection.getPeerCertificate()来获取客户端的身份验证详细信息。
以上是 如何知道node.js中的请求是http还是https 的全部内容, 来源链接: utcz.com/qa/423817.html