Files
gerrit/诊断和修复方案.md
2025-12-22 17:12:39 +08:00

2.1 KiB
Raw Permalink Blame History

Gerrit 登录问题诊断和修复方案

问题确认

从测试结果看:

  • 服务器端发送了 CookieSet-Cookie: GerritAccount=...
  • 服务器端登录成功(日志显示 a/1000000
  • 浏览器Chrome 和 Firefox都没有保存 Cookie

根本原因

Chrome 和 Firefox 对 SameSite=None 的 Cookie 要求必须同时设置 Secure=true,但我们的服务器是 HTTP不是 HTTPS所以无法设置 Secure=true。这导致浏览器拒绝保存 Cookie。

最终解决方案

方案一:修改 Chrome 的 SameSite 标志(推荐)

  1. 在 Chrome 地址栏输入chrome://flags/

  2. 搜索SameSite

  3. 找到以下选项并修改

    • SameSite by default cookies → 设置为 Disabled
    • Cookies without SameSite must be secure → 设置为 Disabled
  4. 重启 Chrome

  5. 清除浏览器 CookieCtrl+Shift+Delete

  6. 重新访问http://101.43.95.130:8080

  7. 点击 Account ID 1000000 登录

方案二:修改 Firefox 的配置

  1. 在 Firefox 地址栏输入about:config

  2. 搜索network.cookie.sameSite

  3. 找到以下选项并修改

    • network.cookie.sameSite.noneRequiresSecure → 设置为 false
  4. 重启 Firefox

  5. 清除浏览器 Cookie

  6. 重新访问http://101.43.95.130:8080

  7. 点击 Account ID 1000000 登录

方案三:配置 HTTPS最彻底的解决方案

配置 HTTPS 可以完全解决 Cookie 问题,但需要 SSL 证书。如果需要,我可以帮您配置。

方案四:修改 Gerrit 配置使用 LAX可能有效

让我尝试将 cookieSameSite 改为 LAX,这可能对某些浏览器更友好。

当前服务器配置

[httpd]
    listenUrl = http://*:8080/
    cookieSecure = false
    cookieSameSite = NONE
    cookiePath = /

重要提示

这是浏览器的安全策略限制,不是服务器配置问题。服务器端已经发送了 Cookie但浏览器因为安全策略拒绝保存。

请先尝试方案一(修改 Chrome 的 SameSite 标志),这是最可能成功的方案。