云函数和Express req.headers.cookie未定义

时间:2018-11-28 01:56:41

标签: node.js firebase express cookies google-cloud-functions

我正在使用Firebase Cloud Functions和cookie模块,并且一个函数设置了“ __session” cookie(Cloud Functions中唯一可用的cookie),然后对另一个函数执行“ GET”请求。在第二个函数中,当我尝试使用cookie.parse(req.headers.cookie).__session获取cookie时,它表示未定义。但是,我可以在浏览器中看到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.

}

更新

添加代码后,我意识到我正在res(快速响应)上设置cookie,但使用request(请求-承诺模块)发出了get请求。我认为这可能是我的问题。我将弄清楚如何将Cookie设置为request并查看是否可以解决它。

1 个答案:

答案 0 :(得分:0)

我基本上解决了这个问题。事实证明,在Express { .... content: "<div id="attachment_565754" class="wp-caption alignnone"> <img class="size-large wp-image-565754"...../>" ...... } <div className="col col-sm-12 col-md-12 col-lg-12"dangerouslySetInnerHTML {{__html: this.props.postDetails.content}}> </div> 上设置cookie是问题的一部分。我应该将其设置在res对象上(请求承诺)。我尝试了几种方法来设置请求中的cookie,包括request。但是唯一可行的方法是:

request.cookie