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

使用expressjs 3强制SSL

夏朝
2023-03-14
问题内容

我正在运行没有代理并且使用SSL的node.js express 3服务器。

我试图弄清楚如何强制所有连接通过https。

Google搜索向我显示了这一点:

https://groups.google.com/forum/#!topic/express-
js/Bm6yozgoDSY

当前没有办法强制执行https重定向,尽管这似乎有点奇怪。我们有一个仅使用https的应用程序,并且只有一个简单的〜4行节点http服务器可以重定向,没有什么花哨的

这是我需要的,但是他没有说这4行是什么。

我们如何做到这一点?谢谢。


问题答案:

当只有一台服务器可以完美地完成工作时,我不太了解启动两台服务器的意义。例如,通过在服务器文件中添加一个简单的中间件:

app.use(function(req, res, next) {
  if(!req.secure) {
    return res.redirect(['https://', req.get('Host'), req.url].join(''));
  }
  next();
});

这会将所有非安全请求重定向到相应的HTTPS页面。例如,http://example.com/to
https://example.com/http://example.com/foo?bar=wooto
https://example.com/foo?bar=woo。这绝对是我所期望的行为。也许您应该按主机筛选此文件,以便它仅在您拥有并安装了适当证书的域上重定向。

如果您的应用程序在Nginx之类的另一台服务器上运行,则可能需要添加configuration参数app.set('trust proxy', true)。或者,甚至更好的是,让Nginx自己执行重定向,这将比任何Node.js应用程序都更高效。

编辑: 根据我的基准,join+连接字符串快一点。没什么大不了的,但是每一次胜利都是胜利。



 类似资料:
  • 我看到这篇文章给出了使用WebClient将文件上传到ftp的简单想法。这很简单,但如何强制它使用SSL?

  • 问题内容: 我们正在与第三方进行集成,该第三方发送的XML的Content-Type标头为text / html。我们正计划使用Spring的RestTemplate将其映射到我们从xsds生成的类,但是RestTemplate无法找到合适的转换器用于内容。第三方拒绝修复内容类型,因为它可能破坏其他伙伴的集成。 Spring的RestTemplate是否有办法强制其使用特定的转换器?我们基本上只是

  • 我们正在与第三方集成,该第三方以text/html的形式发送带有content-type标题的xml。我们计划使用Spring的RestTemplate将其映射到我们从xsds生成的类,但是RestTemplate未能为内容找到合适的转换器。第三方拒绝修复内容类型,因为这可能会破坏其他合作伙伴的集成。 Spring的RestTemplate有办法强制它使用特定的转换器吗?我们基本上只是在做以下几点

  • 有没有强制slf4j使用特定的日志提供程序(在我的情况下是logback)?如在其文件中所述: 在类路径上找到多个绑定 我想要的只是通过JVM参数强制slf4j使用logback,例如,这样它就可以打印警告,并且我可以在将来排除JAR。

  • 我试图使用Auth在我的Kohana应用程序中强制使用强(er)密码,方法是使用以下正则表达式要求至少一个大写字母、一个小写字母、一个数字、一个非字母数字(特殊字符)和至少8个字符。 正则表达式正在工作,正如在Rubular上可以看到的那样。这是我在Kohana的Model\u Auth\u User中使用的代码,它扩展了ORM。 但是,当创建一个新的用户帐户或更改现有帐户的密码时,这个正则表达式

  • 问题内容: 如何使用PHP中特定的.htaccess和mod_rewrite页面强制使用SSL / https。 问题答案: 对于Apache,您可以使用强制SSL : 除非为当前连接启用了SSL上的HTTP(即HTTPS),否则该指令禁止访问。这在启用SSL的虚拟主机或目录中非常方便,可防止配置错误暴露应受保护的内容。使用此指令时,将拒绝所有未使用SSL的请求。 不过,这不会重定向到https。