当前位置: 首页 > 面试题库 >

如何知道node.js中的请求是http还是https

汝彭薄
2023-03-14
问题内容

我正在使用nodejs和expressjs。我想知道request.headers.protocolclientRequest对象中是否有类似的东西。我想为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(布尔值)中。

编辑: 对于 Node 0.6.15 + ,API已更改:

HTTPS连接具有req.connection.encrypted(一个具有SSL连接信息的对象)。HTTP连接没有req.connection.encrypted

另外(来自docs):

有了HTTPS支持,请使用request.connection.verifyPeer()和request.connection.getPeerCertificate()来获取客户端的身份验证详细信息。



 类似资料:
  • 问题内容: 我用Java写了一个servlet,我想知道对该servlet的请求是使用HTTP还是HTTPS执行的。 我以为可以使用,但是两种方法都返回HTTP / 1.1。 有任何想法吗? 问题答案: *_答案是 _ *HttpSerlvetRequest.isSecure() 。在以下情况下,ServletContainer负责返回true: ServletContainer本身是否可以接受h

  • 问题内容: 有人怎么知道请求是否是ajax?(我正在使用jQuery的ajax) 问题答案: jQuery进行的所有AJAX调用都会添加一个标头,以表明它是AJAX。要检查的标头是,值将是AJAX调用时的值。 请注意,AJAX请求是普通的GET或POST,因此,除非您(或jQuery之类的AJAX库)在请求中添加其他标头,否则无法确定是否为AJAX。

  • 问题内容: 我想针对AJAX请求与常规请求以不同的方式处理错误。 如何在Struts2操作中确定请求是否为AJAX? 问题答案: 您应该检查请求标头是否存在并且等于。 请注意,并非所有AJAX请求都具有此标头,例如,请求不发送该标头。如果您是使用(或使用任何其他新的AJAX框架)生成AJAX调用,则该文件就在那里。 您可以使用… 检查它是否存在,例如,当您对Stack Overflow投票时;)

  • 问题内容: 我有一个HTTP请求,该请求传递的值将用于使用JAX-RS在Java Web服务中处理的某些代码中。Java中的POST函数正在使用。有两个可能的值要传递到请求中,分别调用一个和另一个(假设它们都是String)。该请求要求将两个可能的值 中的至少 一个视为“有效”。 当请求进入时,如果提供了if 并将其完全排除在请求之外,那么检查那里是否存在的正确方法是什么?你会检查,看看是否还是?

  • 我知道这是一个古老的问题,可以在很多地方找到,但我仍然无法找到解决方案。 我想要的是,如果我使用手机的库存相机拍摄图像或从图库中选择图像,它应该告诉我图像的方向或确切的高度和宽度,以便我可以决定方向。 到目前为止,我使用stackoverflow尝试的是:- 但问题是,当使用相机捕获图像时,它分别给出6和1的纵向和横向。如果从图库中选择图像,它会给我0。所以我无法确定图像是风景还是肖像。 提前感谢

  • 问题内容: 如何在node.js中使用数据发出出站HTTP POST请求? 问题答案: 这是一个使用node.js向Google Compiler API发出POST请求的示例: 我已经更新了代码,以显示如何从文件而不是硬编码的字符串发布数据。它使用async 命令来实现此目的,并在成功读取后发布实际代码。如果有错误,则抛出该错误,如果没有数据,则该过程以负值退出以指示失败。