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

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

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

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

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

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

2 ответов


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

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

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


потянув библиотеку да-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 по какой-то причине.

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