Облачные функции и экспресс req.headers.cookie Не определено - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Firebase Cloud Functions и модуль cookie , и одна функция устанавливает cookie «__session» (единственный cookie, доступный в облачных функциях), затем выполняет запрос «GET» для другой функции,Во второй функции, когда я пытаюсь получить cookie, используя cookie.parse(req.headers.cookie).__session, он говорит, что он не определен.Однако я вижу cookie в браузере, поэтому понятия не имею, почему не могу получить его в своем приложении.Я заметил, что есть несколько других вопросов SO, похожих на эту проблему, которые также остаются без ответа.

Вот соответствующий код из первой функции:

const nonce = require('nonce')();

const state = nonce();
res.cookie('__session', state);

request.get('https://myappurl.firebaseapp.com/myapp/path?state=' + state, { json: true })
    .catch((error) => {
      console.log(error.message);
    });

res.redirect('someurl.com');

Из второй функции:

const cookie = require('cookie');

app.get('/myapp/path', (req, res) => {

  console.log(req.headers.cookie); // This is undefined.
  const stateCookie = cookie.parse(req.headers.cookie).__session
  console.log('stateCookie: ' + stateCookie); // This is undefined.

}

ОБНОВЛЕНИЕ

После добавления кода я понял, что я устанавливаю cookie на res (экспресс-ответ), но выполняю запрос на получение с помощью request(модуль запроса-обещания).Я думаю, что это может быть моей проблемой.Я собираюсь выяснить, как установить cookie на request и посмотреть, решит ли это это.

1 Ответ

0 голосов
/ 29 ноября 2018

Я решил это, в основном.Оказывается, установка cookie на Express res была частью проблемы.Я должен установить его на объекте request (запрос-обещание).Я попробовал несколько способов установить cookie по запросу, включая request.cookie.Но единственный способ, который работал, был следующим:

var options = {
    headers: {
      Cookie: '__session=mytestheadercookie'
    }
};

request.get('https://myapp.com', options)
    .catch((error) => {
      console.log(error.message);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...