Перенаправление HTTP не работает с Google App Engine с app.yaml - PullRequest
0 голосов
/ 08 октября 2019

У меня есть проект паруса узлов в Google App Engine, и мне нужно перенаправить http на https.

С Google Docs мне нужно добавить обработчики с s ecure: всегда в app.yaml файле для достижения безопасного перенаправления, но он не работает для меня.

Мой app.yaml

env: flex
runtime: nodejs
manual_scaling:
  instances: 1
resources:
  cpu: 2
  memory_gb: 8
  disk_size_gb: 200
handlers:
- url: /.*
  script: auto
  secure: always
  redirect_http_response_code: 301
env_variables:
  SQL_PASSWORD: "------"
  SQL_DATABASE: "-----"
  INSTANCE_CONNECTION_NAME: "-----"

Я что-то пропустил.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2019

App Engine Flex не поддерживает опцию secure: всегда для App Engine Standard он поддерживает.

С помощью Sails созданы политики для перенаправления со ссылкой John Hanley Answer

config / env / production. JS

module.exports = {
   ...
   ......
   .........
   policies:{
    '*': 'isHTTPS'
   }
}

API / политики / isHTTPS.js

module.exports = function(req, res, next) {
  var schema = req.headers['x-forwarded-proto'] || '';

  if (schema === 'https') {
      // if its a request from myweb.backend.appspot.com
      if (req.headers.host !== 'myweb.com') {
        res.redirect('https://' + 'myweb.com' + req.url);
      } else {
        next();
      }
  } else {
      // Redirect to https.
      res.redirect('https://' + ((req.headers.host !== 'myweb.com') ? 'myweb.com' : req.headers.host)  + req.url);
  }
};
0 голосов
/ 08 октября 2019

App Engine Flex не поддерживает параметр secure: always

Этот параметр предназначен для стандарта App Engine.

Вам потребуется выполнить перенаправление HTTP на HTTPS в коде вашего веб-сервера.

Вот пример:

app.use(function(request, response){
  if(!request.secure){
    response.redirect("https://" + request.headers.host + request.url);
  }
});
...