You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular请求未携带HttpOnly Cookie问题(Asp.Net Core后端)

问题解决方法

1. Angular请求启用凭证携带

Angular的HttpClient默认不会在跨域请求中携带Cookie,需要在请求里显式开启withCredentials选项:

修改你的RefreshToken方法:

RefreshToken():Observable<JwtResponse>{
    return this.http.post<JwtResponse>(this.baseUrl+'/refresh-token',{}, { withCredentials: true }).pipe(map(jwtResponse=>{
      this.setJwtToken(jwtResponse);
      return jwtResponse;
    }));
}

2. 后端调整Cookie配置

由于前端是http://localhost:4200、后端是https://localhost:7121,属于跨域且协议不同的场景,需要修改Cookie的SameSite和Secure属性,确保Cookie能被浏览器正确携带到跨域请求中:

更新AppendRefreshTokenToCookie方法里的CookieOptions:

var cookieOptions = new CookieOptions
{
    Expires = DateTimeOffset.UtcNow.AddSeconds(_refreshTokenOptions.Expires),
    HttpOnly = true,
    SameSite = SameSiteMode.None, // 允许跨域携带Cookie
    Secure = true, // 后端为HTTPS时,必须开启此属性才能搭配SameSite=None使用
};

3. 验证关键点

  • 打开浏览器开发者工具的Application标签,确认目标Cookie的SameSite值为None、Secure值为true
  • 检查请求的Request Headers中是否包含Cookie字段,确认刷新令牌已被正确携带

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:39:57