有两个域:domain1.com
和domain2.com
。 domain1.com
的服务器:
app.get('/',(req,res,next)=>{
res.redirect('domain2.com/');
})
和domain2.com
的服务器:
app.get('/',(req,res,next)=>{
res.cookie("name",'luoxia');
res.end();
})
我发现Cookie设置为domain1.com
,为什么?
我想将Cookie设置为domain2.com
。怎么做?
答案 0 :(得分:1)
无法为其他域设置Cookie。允许这会带来巨大的安全漏洞。 没有跨域cookie这样的东西。您可以在foo.example.com和bar.example.com之间共享cookie,但出于安全原因,不得在example.com和example2.com之间共享。
如果要将数据传递到另一个域,可以将其编码到URL中。或者你可以这样这样的黑客。
将所有Cookie集中在一个域中,
1. let's say cookiemaker.com When the user makes a request to example.com you redirect him to cookiemaker.com
2.cookiemaker.com redirects him back to example.com with the information you need
当然,它不是完全安全的,你必须在你的应用程序之间创建某种内部协议才能做到这一点。
最后,如果您在每次请求时都做同样的事情,对用户来说会非常烦人,但如果它只是第一次请求,则会非常烦人。
请参阅RFC6265:
除非Domain属性,否则用户代理将拒绝cookie 指定包含源服务器的cookie的范围。 例如,用户代理将接受带有域的cookie 属性" example.com"或者" foo.example.com"从 foo.example.com,但用户代理不接受带有的cookie " bar.example.com"的域属性或者" baz.foo.example.com"。
注意:出于安全原因,许多用户代理都配置为拒绝 对应于"公共后缀"的域属性。例如, 某些用户代理将拒绝" com"的域属性。或" co.uk"。 (有关更多信息,请参阅第5.3节。)