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