HTTP引擎上的HTTPSredirect

我已经遵循了这个答案: 谷歌云redirect从http到https,但它似乎不再是目前的准确。 被引用的定位点( https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#security )似乎已被删除,但没有备注。

作为参考,我通过Google App(flex)引擎提供NodeJS服务。 根据我在app.yaml得到的答案:

 handlers: - url: /.* script: IGNORED secure: always 

由于HTTPS在击中我的Express引擎之前明显终止(并且在那里redirect将是无用的)。 目前如何正确实施?

可能有帮助的是,我通过控制台中的“自定义域”选项卡附加了一个外部域,并确实configuration了SSL证书(因此,如果用户手动访问https://.com,则一切正常)

灵活的环境目前不支持app.yaml中的处理程序。 如果你想要https://redirect,你有几个select:

  • 使用头盔来为你做HSTS的东西,并实现自己的初始redirect。
  • 我写了一个快乐的小图书馆,以便在所有路线上强制使用SSL来表示yes-https

我们正在考虑默认情况下自动将所有stream量redirect到SSL。 你认为这对你的应用程序是一件好事吗?

拉贾斯汀的yes-https库,我能够得到这个工作:

 var app = express(); app.use(function(req, res, next){ if (req.host != 'localhost' && req.get('X-Forwarded-Proto') == 'http') { res.redirect(`https://${req.host}${req.url}`); return; } app.router(req, res, next); }); 

起初我以为我必须这样做,因为我在一个appengine子域,不能使用HSTS。 然后我学到了HSTS适用于子域名。 :)无论如何,我想人们可能会想看看,如果他们不想使用yes-https出于某种原因,要使用什么神奇的function。

贾斯汀,自动redirect所有stream量到SSL默认听起来很棒。 我刚刚花了几个小时试图找出如何这样做之前,我发现这篇文章,因为我试图让我的应用程序按照https://developers.google.com/web/fundamentals/engage的 Chrome的添加到主屏幕安装横幅-and-retain / app-install-banners / 。