Keycloak Angular适配器调用login-status-iframe.html返回204是否正常?
问题:Keycloak JS适配器发起的login-status-iframe请求返回204是否正常?
我正在将Keycloak(26.1)与Angular(19)应用集成,想验证当前观察到的现象是否正常。
当前行为
Keycloak JS适配器会发起GET请求至:
http://localhost:8080/realms/my_realm/protocol/openid-connect/login-status-iframe.html/init?client_id=my-client&origin=http%3A%2F%2Flocalhost%3A4200
该请求返回状态码204,且Keycloak日志中无错误信息。
环境详情
Keycloak客户端配置
Web Origins: http://localhost:4200 Valid redirect URIs: http://localhost:4200/*
Keycloak Docker Compose配置
services: keycloak: image: quay.io/keycloak/keycloak:26.1 environment: KC_DB: postgres KC_DB_URL: postgres_url KC_DB_USERNAME: postgres KC_DB_PASSWORD: password KC_BOOTSTRAP_ADMIN_USERNAME: admin KC_BOOTSTRAP_ADMIN_PASSWORD: admin KC_HTTP_ENABLED: true KC_HEALTH_ENABLED: true command: start-dev ports: - "8080:8080" networks: - keycloak_network volumes: - ../keycloak/themes:/opt/keycloak/providers/ networks: keycloak_network: external: true
Angular KeycloakProvider配置
provideKeycloak({ config: { realm: 'my_realm', url: 'http://localhost:8080', clientId: 'my-client' }, initOptions: { onLoad: 'check-sso', silentCheckSsoRedirectUri: window.location.origin + '../assets/silent-check-sso.html', }, features: [ withAutoRefreshToken({ onInactivityTimeout: 'logout', sessionTimeout: 60000 }) ], providers: [ AutoRefreshTokenService, UserActivityService, { provide: INCLUDE_BEARER_TOKEN_INTERCEPTOR_CONFIG, useValue: [localhostCondition] } ] });
Angular依赖包版本
"keycloak-angular": "^19.0.2", "keycloak-js": "^26.1.4",
请问该请求返回204的情况是否属于正常行为?
答案
这是完全正常的行为。
Keycloak的login-status-iframe.html/init接口作用是初始化会话状态检测的iframe,用于在后台静默监控用户的Keycloak会话状态(比如是否已在其他设备登出)。返回204状态码表示请求成功,但没有需要返回的实体内容——这个接口本身不需要返回任何页面或数据,只是完成初始化逻辑(比如设置必要的Cookie或会话标记)。
结合你的配置来看:
- 客户端的
Web Origins和Valid redirect URIs配置正确,符合跨域要求 - Keycloak日志无错误,说明请求没有触发任何异常
- 你启用了
check-sso和自动刷新令牌功能,适配器发起这个请求正是为了支撑这些会话管理特性
无需对此现象做任何调整,这是Keycloak JS适配器正常工作的表现。
内容的提问来源于stack exchange,提问作者rafaelpadu
相关产品推荐
相关产品推荐

