Как убедиться, что триггер HTTP будет вызываться только через HTTPS? - PullRequest
0 голосов
/ 05 июля 2019

Я создаю API для облачных функций с NodeJS и Express (Firebase), и я хотел бы принимать только вызовы через HTTP, поэтому вызовы, сделанные через обычный HTTP, не будут работать. Возможно ли это сделать?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Вы должны проверить объект запроса, передаваемый вашей функции. Это будет объект типа Express Request . Запрос имеет свойство под названием protocol , которое должно быть "https". Итак:

functions.https.onRequest((req, res) => {
    if (req.protocol !== "https") {
        // reject the request
        res.sendStatus(403)
    }
})
1 голос
/ 06 июля 2019

Как правило, вы хотите, чтобы приложение работало для каждого протокола и прослушивало другой порт. Чтобы решить вашу проблему, вы можете просто проигнорировать запросы для экземпляра http или перенаправить каждый запрос http на запрос https.

Вот промежуточное ПО для этого:

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

См. Экспресс-документацию .

...