我的应用程序由两部分组成:
我将这些部分托管在azure上,每个部分都在自己的子域中,所以我们有:
当用户登录时,我设置了一个cookie,据我了解,可以在子域中使用cookie。 Cookie的设置方式如下:
Response.Cookies.Append("token", "token value", new CookieOptions
{
Expires = DateTimeOffset.Now.AddDays(7),
SameSite = SameSiteMode.None,
Domain = "azurewebsites.net"
});
但是cookie不会与请求一起发送到任何一个子域。怎么会这样?
如果这是错误的方法,如何使用SSR应用程序和rest api进行身份验证?当应用在节点中呈现时,它使用与同构提取相同的方式在浏览器中获取数据,cookie随同传递。
所有这些都可以在localhost上完美运行,当应用程序与api位于不同的子域时,问题就开始了。
更新:
cookie标头如下:
Set-Cookie: token=<token>; expires=Sat, 22 Jun 2019 05:35:18 GMT; domain=azurewebsites.net; path=/; secure
在firefox上,其工作原理与chrome不同。在chrome上,我执行身份验证api请求,获取令牌获取cookie头,然后cookie不会随任何后续请求一起发送。
在firefox中,cookie确实会随后续请求一起发送,但是刷新页面后,cookie消失了。
答案 0 :(得分:0)
我找到了这个ASP.NET Core Sharing Identity Cookie across azure web apps on default domain (*.azurewebsites.net)
出于安全原因,azurewebsites.net
域的跨子域Cookie被阻止。