Appearance
h5-sso-cookie-demo
1. 实验目标
用最小 Android WebView 验证 H5 登录态与 Cookie 强注入 SSO(对应 docs/05-bridge-hybrid/05):
- Cookie 强注入:
CookieManager.setCookie必须带Domain=.example.com(覆盖子域名) - 第三方 Cookie + 持久化:
setAcceptThirdPartyCookies+flush()(默认只写内存缓冲) - JSBridge 动态换票:模拟 401 → Native 静默换票 → 写回 Cookie → 重放请求
2. 工程要点
- 本地 H5 页
assets/h5_sso_demo.html:document.cookie读取 + 401 换票模拟 SsoBridge.refreshToken()(@JavascriptInterface):Native 侧换新 token 并写回 Cookie- 三个关键点全部演示:Domain 指定 / 第三方 Cookie / flush
3. 运行方式
bash
cd labs/android/host
./gradlew installDebug1
2
2
设备/模拟器打开 Android Host → 打开 H5 SSO Cookie 实验室。
操作:点"注入 Cookie" → H5 页读取显示 token;点"模拟 401" → 触发换票,Cookie 更新。
4. 预期现象
- 注入前 H5 显示
(空:说明未注入或 Domain 不匹配) - 注入后显示
token=injected_token_abc(Domain 正确才可见) - 点"模拟 401":Native 日志出现"换票",H5 Cookie 更新为新 token
5. 常见误区
| 误区 | 实际情况 |
|---|---|
setCookie 不写 Domain 也行 | 不写只对精确域名生效,跨子域名(pay./api.)请求丢 Cookie |
setCookie 立即持久化 | 默认写内存缓冲,必须 flush() 否则崩溃/杀进程即丢 |
| 换票成功后前端自己存 | 应由 Native 统一写 Cookie 并保持单一事实源,避免双写漂移 |
6. 对应知识库文档
- 理论主文档:H5 登录态与 Cookie 强注入 SSO 机制
- JSBridge 基础:WebView H5 JSBridge 交互与安全防护