Перенаправление HTTP на HTTPS в App Engine

Я выполнил ответ на этот вопрос: переадресовать с http на https в облаке Google, но он, похоже, в настоящее время не точнее. Ссылка на якорь (https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#security), похоже, была удалена, но без примечания о замене.

Для справки, я обслуживаю NodeJS через Google App (flex) Engine. В соответствии с ответом, который я получил в своем приложении. app.yaml:

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

Поскольку HTTPS, очевидно, прекращается до того, как он ударит по моему движку Express (и перенаправление на него будет бесполезным); как он в настоящее время правильно реализован?

Потенциально полезный, у меня есть внешний домен, подключенный через вкладку "Пользовательские домены" на консоли, и действительно есть настроенный SSL-сертификат (так что если пользователь вручную переходит на https://.com, все в порядке)

Ответ 1

Гибкая среда не поддерживает текущие обработчики поддержки в app.yaml. Если вы хотите перенаправить https://, у вас есть несколько вариантов:

  • Используйте шлем, чтобы сделать для вас материал HSTS, и реализуйте свою собственную первоначальную переадресацию.
  • Я написал счастливую маленькую библиотеку, которая всегда заставляет SSL на всех маршрутах для экспресс- да-https

Мы рассматриваем автоматическое перенаправление всего трафика на SSL по умолчанию. Считаете ли вы, что это будет хорошо для ваших приложений?

Ответ 2

Вытащив библиотеку Justin 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.

Justin, автоматически перенаправляющий весь трафик на SSL по умолчанию, отлично подходит для меня. Я просто потратил часы, пытаясь понять, как это сделать, прежде чем я нашел этот пост, потому что пытался получить свое приложение, чтобы добавить Chrome в рабочий стол для установки на рабочем столе в соответствии с https://developers.google.com/web/fundamentals/engage -and-keep/app-install-banners/.