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

AngularJS页面刷新时Cookie丢失问题求助

AngularJS页面刷新保留SSO Cookie的解决方案

以下是针对页面刷新丢失SSO Cookie问题的排查和解决步骤:

1. 检查Cookie核心属性配置

Cookie被清除最常见的原因是属性配置不合理,重点确认以下几点:

  • 禁用会话级Cookie:要求Identity Server设置Cookie时指定Max-Age或Expires参数,不要使用默认的会话Cookie(浏览器刷新或关闭即清除)。
  • Domain与Path设置:
    • Domain需设为AngularJS应用与Identity Server共享的父域(如.example.com),保证跨子域能正常访问Cookie;
    • Path设置为/,确保整个域下的页面都能读取该Cookie,避免设置过窄的路径限制。
  • Secure与SameSite配置:
    • 若站点使用HTTPS,必须开启Secure属性,否则浏览器可能拒绝保存Cookie;
    • 跨域场景下,将SameSite设为Lax(兼容多数场景)或None(需配合Secure属性),避免浏览器因跨域策略清除Cookie。

2. 调整AngularJS路由配置

如果应用使用HTML5路由模式($locationProvider.html5Mode(true)),必须在服务器端配置重写规则,将所有路由请求转发到index.html。否则刷新页面时服务器返回404错误,可能导致Cookie上下文丢失。
示例Nginx配置:

location / {
    try_files $uri $uri/ /index.html;
}

3. 前端Cookie操作规范(若前端参与Cookie管理)

如果前端需要存取SSO相关Cookie,需使用AngularJS的ngCookies模块提供的$cookies服务,确保设置持久化属性:

// 引入ngCookies模块
angular.module('myApp', ['ngCookies']);

// 设置持久化Cookie
angular.module('myApp').controller('AuthCtrl', function($cookies) {
    $cookies.put('sso_token', 'your_token_value', {
        expires: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 7天有效期
        domain: '.example.com',
        path: '/',
        secure: true,
        sameSite: 'Lax'
    });
});

4. 排查浏览器隐私设置

检查浏览器是否开启「隐私模式」或「阻止第三方Cookie」:

  • 隐私模式下浏览器会自动清除会话Cookie;
  • 跨域场景中第三方Cookie可能被默认阻止,需引导用户允许站点Cookie,或调整后端SameSite属性为None(需HTTPS环境)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:52:44