登录后白屏,意味着 auth 已经通过(URL 是 chatgpt.com/?...、document.cookie 里有 session token),但 React app shell 没渲染出来。原因几乎总是这三类之一:某个 JS chunk 加载失败、service worker 在用旧缓存拦请求、或者扩展把应用要等的脚本 / WebSocket 拦了。
最快的修法(约 80% 的情况有效):先硬刷一次(Cmd/Ctrl + Shift + R)。还白?用无痕 / 隐私窗口(默认不带扩展)打开。无痕能正常显示,说明问题出在缓存或扩展上——直接跳到 Step 2。无痕也白屏,那多半是 service worker 或浏览器策略 / 网络问题——先 Step 2,再 Step 5。
想 10 秒内定位真正原因:按 F12 打开 Console 标签,重新加载,看第一条红色报错。那一条 error 字符串能直接对应到下表的某个修法。
你属于哪一类?
| 你看到的现象 | 最可能的原因 | 去哪一步 |
|---|---|---|
| 硬刷后能显示,约 30 秒后又白 | service worker 又缓存了旧 chunk | Step 2 |
| 普通窗口白,无痕窗口正常 | 扩展或缓存数据 | Step 2 + Step 4 |
| 无痕也白,但换个浏览器正常 | 浏览器 profile / 策略 | Step 5 |
| 每个浏览器都白,状态页有 incident | OpenAI 服务端故障,不是你的问题 | Step 6 |
| Console 报某一条具体红色 error | 在 Step 3 表里对号入座 | Step 3 |
常见原因
1. 浏览器缓存了和当前构建不匹配的 chunk
OpenAI 部署新版本时旧 HTML 引用的 chunk-abc123.js 已经被 CDN 替换成 chunk-def456.js。浏览器拿旧 HTML 去请求旧 chunk,返回 404 / 200 但 hash 对不上。
如何判断:DevTools → Console 看到 Loading chunk N failed 或 ChunkLoadError 或 Unexpected token '<'(HTML 当 JS 解析失败)。
2. 广告 / 隐私扩展拦了应用脚本
uBlock Origin 或 AdGuard 的某些第三方滤镜会把 *.statsig.com(特性开关)、*.intercom.io、*.cloudflareinsights.com 这类域名全拦了,而 ChatGPT 在 init 时会请求这些 endpoint。ChatGPT 的特性开关引导依赖 Statsig 那个请求,一旦它被硬拦,shell 就可能卡在白屏状态而不渲染。
如何判断:DevTools → Network → 看 ERR_BLOCKED_BY_CLIENT 的请求。或者直接看 Console 有没有 net::ERR_BLOCKED_BY_CLIENT。
3. Service worker 卡在旧版本
PWA 注册了 service worker 缓存策略。前端大版本发布后,部分用户的 SW 是”半脑”状态——老 HTML 指向新 chunk URL,但 SW 拦截了请求返回缓存的 404 占位符。
如何判断:DevTools → Application → Service Workers,如果 status 不是 “activated and is running” 或 source 显示一个老日期,就是这个问题。
4. 浏览器策略 / 站点权限禁了 JS
公司管的 Chrome 通过 group policy 把 chatgpt.com 加到 “JavaScript blocked”;或者你之前手动 Settings → Site permissions → Block JavaScript on this site。
如何判断:访问 chatgpt.com,地址栏左边的小锁 → Site settings → JavaScript 是否是 Block。
5. CSP / CORS 错误(少见但很硬)
公司代理或扩展(比如某些 VPN)注入了自己的 CSP header,把 script-src 限制得比 OpenAI 原本严。结果应用本来允许的 inline script 全被拒。
如何判断:Console 报 Refused to execute inline script because it violates the following Content Security Policy directive。
最短修复路径
从最便宜的开始:硬刷 → 注销 SW → 关扩展 → 改权限。
Step 1:硬刷新强制重新下载 chunk
Mac: Cmd + Shift + R
Win: Ctrl + Shift + R 或 Ctrl + F5
如果有效但 30 秒后又白——是 service worker 在重新缓存旧 chunk。继续 Step 2。
Step 2:注销 service worker
DevTools (F12) → Application → Service Workers
→ 找 chatgpt.com 那条
→ 点 Unregister
→ 顺手在 Storage 标签点 Clear site data → 勾掉 cookies(不然要重登)
→ 关掉所有 chatgpt.com 标签
→ 重开
或者一行命令在 Console 干掉所有:
navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()));
Step 3:读 Console 的第一条 error
按 F12 打开 DevTools → Console → 重新加载页面,看最早一条红色 error。下表对应处理:
| Console 错误 | 原因 | 修法 |
|---|---|---|
ChunkLoadError / Loading chunk N failed | Chunk 缓存对不上 | Step 1 + Step 2 |
net::ERR_BLOCKED_BY_CLIENT | 扩展拦了 | Step 4 |
Refused to execute inline script | CSP 注入 | Step 5 |
Failed to register a ServiceWorker | SW 安装失败 | Step 2 |
CORS policy: No 'Access-Control-Allow-Origin' | 代理改了 header | 换网或 Step 5 |
Uncaught SyntaxError: Unexpected token '<' | Chunk URL 返回了 HTML 404 | Step 1 + Step 2 |
Step 4:依次禁用扩展
打开 chrome://extensions → 把这几个先关掉再试:
- uBlock Origin / AdGuard
- Privacy Badger / Ghostery
- NoScript / uMatrix
- 任何 “Cookie AutoDelete” / “Forget Me Not”
或开个 Incognito + 禁所有扩展窗口(Chrome:Cmd/Ctrl + Shift + N),能用就说明肯定是扩展。再回正常窗口一个个开回去定位元凶。
Step 5:检查 JS 权限和 CSP
地址栏小锁 → Site settings
→ JavaScript: Allow
→ Cookies: Allow
→ Insecure content: Block(默认即可)
公司机器 group policy 锁死的话本地切换没用,要 IT 把 chatgpt.com 加到 JavaScriptAllowedForUrls 策略。
Step 6:先排除 OpenAI 服务端故障
如果每个浏览器都白、上面的步骤都没用,先确认问题到底在不在你这边。打开 status.openai.com,看 ChatGPT 这个组件。如果它显示 degraded 或有已发布的 incident,那白屏就是服务端的事——本地怎么折腾都没用。OpenAI 在 2026 年 4 月 20 日有过一次明显的平台故障,状态页上时不时也会发 incident,所以继续折腾前,花 10 秒查一下值得。
Chrome 白但 Safari 正常,就说明是浏览器侧的问题——回到出问题的那个 Chrome profile,把 Step 1 到 Step 5 再走一遍。
怎么确认真的修好了
满足下面全部条件,才算真修好(而不是碰巧好了一下):
- 加载后一两秒内对话侧栏和输入框都正常渲染出来。
- 硬刷新和新开一个标签都能正常显示——不只是你刚清过的那一个。
- DevTools → Console 重新加载后没有红色的
ChunkLoadError、ERR_BLOCKED_BY_CLIENT或 CSP 报错。 - 撑过约 60 秒,说明 service worker 是干净地重新注册了,而不是又把旧 chunk 端上来。
如果显示一次、下次跳转又白,说明 service worker 其实没注销掉——先关掉所有 chatgpt.com 标签,再把 Step 2 重做一遍。
常见问题
为什么 ChatGPT 在无痕窗口正常,普通窗口却白屏? 无痕窗口启动时没有 service worker、缓存是空的、默认也不带扩展。所以「普通窗口白 / 无痕正常」这种分裂,恰好说明问题就在这三者之一:旧缓存 chunk、卡死的 service worker、或者拦请求的扩展。先做 Step 2(注销 SW + 清站点数据、保留 cookies),再做 Step 4(扩展)。
清站点数据会把我从 ChatGPT 登出吗? 只有清掉 cookies 才会。在 DevTools → Application → Clear site data 里,稳妥的做法是不勾 cookies,这样 session 还在。如果全清了,你会回到登录页,没什么大不了,重新登一次即可。
在 Console 里跑 navigator.serviceWorker.getRegistrations() 安全吗?
安全。这一行只注销当前源(chatgpt.com)的 service worker,不碰 cookies、密码或其他网站。跑完后关掉所有 chatgpt.com 标签再重开,让一个干净的 worker 重新注册。
整页在每个浏览器里都白——是我的问题还是 OpenAI 的? 先查 status.openai.com。如果 ChatGPT 组件是绿的、只有你白屏,那就是本地问题(缓存 / SW / 扩展 / 策略)。如果它是红的或有 incident,等它恢复就行,本地修法救不了服务端故障。
全清了,公司发的电脑上还是不渲染。
公司的 group policy 可能禁了 JavaScript,或者注入了比 OpenAI 更严的 CSP,本地任何开关都覆盖不了。在 Step 5 里找 Refused to execute inline script 或 JavaScript 被禁的状态,然后让 IT 把 chatgpt.com 加到 JavaScriptAllowedForUrls 策略,并在代理上放行 OpenAI 的域名。
预防建议
- 浏览器保持最新,老 Chrome / Safari 缺现代 ES 特性会导致 chunk 直接 parse 失败。
- chatgpt.com 给广告拦截扩展开例外(uBlock:点扩展图标 → 大按钮”暂停”或加 trusted 域)。
- 别同时装两个广告拦截扩展,规则会打架。
- OpenAI 大更新(一般在工作日早晨 PT)后第一次访问,主动硬刷一次再用。
- 给 chatgpt.com 做 bookmark,从 bookmark 进比从历史进更不易踩 stale URL。
相关阅读
外部参考:
- OpenAI 状态页——确认 ChatGPT 没有正在进行的 incident
- Chrome DevTools:移除 service worker——Step 2 的官方步骤
标签: #ChatGPT #ChatGPT 账号 #排查 #排查 #白屏