Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用跨源cookie进行服务器端渲染?_Javascript_Node.js_Reactjs_Server Side Rendering - Fatal编程技术网

Javascript 如何使用跨源cookie进行服务器端渲染?

Javascript 如何使用跨源cookie进行服务器端渲染?,javascript,node.js,reactjs,server-side-rendering,Javascript,Node.js,Reactjs,Server Side Rendering,我有一个在localhost:3000上运行的服务器端呈现web应用程序,以及localhost:3010上的API。在向API发出请求后,如何在两个域上设置相同的cookie 当我登录时,我向localhost:3010发送一个POST请求,它设置了一个cookie,如下所示: const token = jwt.sign({ id, email }, secret, { expiresIn }); res.cookie('authorization', token, { signed: tr

我有一个在
localhost:3000
上运行的服务器端呈现web应用程序,以及
localhost:3010
上的API。在向API发出请求后,如何在两个域上设置相同的cookie

当我登录时,我向
localhost:3010
发送一个POST请求,它设置了一个cookie,如下所示:

const token = jwt.sign({ id, email }, secret, { expiresIn });
res.cookie('authorization', token, { signed: true, httpOnly: true, maxAge: 10000000 });
我的问题是我不知道如何在
localhost:3000的应用程序上设置cookie。我以前只是使用localStorage,但当我的API和应用程序位于不同的域上时,它不适用于服务器端渲染

下面是我在
localhost:3000
上的服务器端呈现中间件在尝试访问所述cookie时的样子:

import Cookies from 'universal-cookie';

export function serverSideRendering(req, res, next) {
  const cookies = new Cookies(req.headers.cookie);
  const token = cookies.get('authorization');
  // ...
}

尝试将属性名称“authorization”更改为“JWT token”

或者您可以尝试原生节点js方法

res.writeHead(200, {
  'Set-Cookie': 'authorization='+token,
});
我的建议是,不要使用cookie,使用headers字段。这有助于您将来将应用程序增加到ios和android应用程序


您可以将令牌保存在应用程序的存储中,这样更安全。

实际的cookie从请求发送回API,我只是不知道如何在呈现应用程序的另一台服务器上设置它:如果使用本机方法添加cookie,结果也是一样的?我建议您使用开发工具中的cookie使用存储选项卡我明白您的意思。我尝试设置cookie的原因是,我希望服务器在每次浏览器发送请求时都使用该令牌。加载JS包后,我可以将其放入头中,但在此之前我不能,因此我想知道如何从cors请求设置cookie。我的客户从
app.com
请求网站,并从
api.com
登录,因此cookie成功设置为
api.com
,我只需要弄清楚如何将其设置为
app.com
,也许我需要做一个代理请求或其他什么。是的,只是在Nginx中设置代理不确定你的堆栈,一般来说,我通过添加一个代理来解决这个问题,该代理将资源分组在一起,并在同一个原点、不同的路径上进行渲染/服务。也就是说,如果你有一个docker compose堆栈,你可以添加一个nginx层,其中包含对另外两个容器的引用和一个配置,如果你认为值得尝试,我会尽快尝试写一个正确的答案:)
res.writeHead(200, {
  'Set-Cookie': 'authorization='+token,
});