无法在Nginx / Node API中使用安全Cookie

时间:2018-03-21 00:51:53

标签: nginx cookies proxy

首先我要说的是,我已经彻底查看了有关此问题的所有有关stackoverflow和网络的信息,我尝试了几种不同的方法来尝试使其正常工作。

我正在使用包" cookie-session",但是当我将secure设置为true时,我的cookie随请求一起发送(我可以看到使用Postman发出登录请求)但会话似乎它无法通过浏览器工作。当secure设置为false时,一切正常,按预期工作。

让我解释一下我的设置,我有两台服务器:

第一台服务器

  • Serverside呈现运行Node JS的React App
  • 运行Nginx服务器
  • 此处设置了HTTPS" www.example.com"
  • 代理向" www.example.com/api"提出的任何请求;到第二台服务器

第二台服务器

  • 节点/表达app处理API请求
  • 运行Nginx服务器

根据我的理解,只有在通过HTTPS发出请求时才能发送安全cookie。我相信它(上面的设置)。

在我尝试使用信任代理的第二台服务器上,仍然没有运气:

app.set('trust proxy', 1);

app.use(cookieSession({
    maxAge: 7 * 24 * 60 * 60 * 1000,
    keys: [env.SESSION.COOKIE_KEY],
    secure: true
}));

我还认为这可能与使用Nginx发送的标头有关,我在两台服务器上尝试了很多不同的标头,例如(proxy_set_header X-Forwarded-Proto $ scheme),仍然没有运气。

对于我的生活,我不知道该怎么做才能让安全的cookie工作。

另外再次提到一切正常,安全设置为false。当secure设置为true时,我可以通过Postman向我的登录请求,并在请求中接收我的cookie,但似乎会话未应用于客户端。

这与未在第二台服务器上安装HTTPS证书有什么关系吗?如果是这样,我将如何添加一个,因为两个服务器都在同一个域上运行" www.example.com" + proxy / api请求" www.example.com/api" ;?谢谢你的帮助。

0 个答案:

没有答案