如何在客户端检索c#server Response.Cookies.Append方法发送的cookie



我可以像下面的代码一样在c#服务器发送的角度客户端上检索cookie吗(以及如何做到这一点(如果可能((。

private void setTokenCookie(string token)
{
var cookieOptions = new CookieOptions
{
HttpOnly = true,
Expires = DateTime.UtcNow.AddDays(7)
};
Response.Cookies.Append("refreshToken", token, cookieOptions);
}

经过两天的实验和调查,我将尝试回答我自己的问题。

将cookie发送到c#服务器并从c#服务器返回到angular客户端需要几个步骤:

首先用withCredentials: true:从客户端向服务器发送消息(post/get等(

login(email: string, password: string) {
return this.http.post<any>(`${baseUrl}/authenticate`, { email, password }, { withCredentials: true } )
.pipe(map(account => {
const body = account.body;
this.accountSubject.next(account.body);
const expires = new Date(Date.now() + 7*24*60*60*1000).toUTCString();
const cookie = document.cookie; <-- for debugging purpose only
//document.cookie = `refreshToken=${body.refreshToken}; expires=${expires}; path=/`;
this.startRefreshTokenTimer();
return account;
}));
}

然后从c#服务器向客户端发送添加到响应对象的cookie,如下所示(这将在客户端设置cookie(:

var cookieOptions = new CookieOptions
{
HttpOnly = false, // false for debug purpose to be able to see it on the client side
Expires = DateTime.UtcNow.AddDays(7),
};
Response.Cookies.Append("refreshToken", token, cookieOptions);

之后,每当我们执行另一个post/get-etc命令时,angular客户端会自动将cookie发送到c#服务器

请一些专家确认这就是服务器和客户端之间处理cookie的情况吗?

最新更新