Chrome在重定向后不发送cookie
在node.js(使用Hapi框架)中,我为用户创建链接以允许我的应用程序读取用户帐户。 Google处理该请求并询问是否授予权限。然后谷歌使用GET参数作为响应代码重定向到我的服务器,在这里我有一个问题。Chrome在重定向后不发送cookie
谷歌浏览器不会发送带有会话ID的cookie。
如果我将该cookie标记为cookie编辑扩展中的会话cookie,它将被发送。在php中有相同的行为,但php在创建会话时将Cookie标记为会话,所以这不是问题。我正在使用插件hapi-auth-cookie,它会创建会话并处理它的一切。我还将该cookie标记为非HttpOnly的hapi-auth-cookie设置,因为它是第一个区别,我注意到,在检查该PHP会话cookie和node.js中的我时。我对每个重定向都有401错过验证。如果我把光标放在地址栏并按回车,一切正常,所以这是一个重定向的问题。
我的问题基本上是什么,可能是造成这种行为。另一方面,我不得不提到,Firefox在每次请求后都会发送cookie而不会有任何问题。
头重定向后(不带会话cookie):
{
"host": "localhost:3000",
"connection": "keep-alive",
"cache-control": "max-age=0",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
"x-client-data": "CJS2eQHIprbJAQjEtskECKmdygE=",
"x-chrome-connected": "id=110052060380026604986,mode=0,enable_account_consistency=false",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"accept-encoding": "gzip, deflate, sdch, br",
"accept-language": "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4"
}
头打在地址栏中(什么会正常工作)后回车:
{
"host": "localhost:3000",
"connection": "keep-alive",
"cache-control": "max-age=0",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"accept-encoding": "gzip, deflate, sdch, br",
"accept-language": "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4",
"cookie": "SESSID=very_long_string"
}
此问题是由高致病性禽流感,权威性造成-cookie尚未处理isSameSite(Hapi的新功能)。我们可以手动设置,例如。
const server = new Hapi.Server(
connections: {
state: {
isSameSite: 'Lax'
}
}
);
但是请注意,默认情况下你有'Strict'
选项,并在许多情况下,您可能不希望改变这种价值。
对SameSite使用'Lax'解决了我的问题实例,但我很好奇:我们需要更改cookieAuth.set→reply.redirect序列,以便在重定向请求时返回cookie 'isSameSite'是'Strict'?如果我们重新加载,我们会得到cookie。 'set-cookie'显然是有效的。只是Chrome在重定向时不会发送cookie,即使重定向完全合格。 –
我已经提出了上述问题的更完整形式,因为['42216700'](http://stackoverflow.com/questions/42216700/how-can-i-redirect-after-oauth2-with-samesite-strict-和仍然得到 - 我的饼干) –
请显示重定向的代码。需要检查两件事:你是否在会话cookie上设置了rootpath,以便在网站上随处可见?您是否重定向到与cookie设置页面完全相同的域/端口/协议? – jfriend00
是的,cookie有路径:/并且它在每条路线上都能正常工作。谷歌正在重定向到我的网站用户点击允许后,所以我没有这个代码。从理论上讲,这一切都很好,因为我可以在地址栏中输入地址,然后发送cookie。谷歌浏览器只是没有发送cookie后,从谷歌重定向到我的 'http:// localhost:3000/api?code = code_from_google' 但如果我复制链接并粘贴它,它的工作原理。 –