75 lines
2.1 KiB
Markdown
75 lines
2.1 KiB
Markdown
# Gerrit 登录问题诊断和修复方案
|
||
|
||
## 问题确认
|
||
|
||
从测试结果看:
|
||
- ✅ 服务器端发送了 Cookie(`Set-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. **清除浏览器 Cookie**(`Ctrl+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`,这可能对某些浏览器更友好。
|
||
|
||
## 当前服务器配置
|
||
|
||
```ini
|
||
[httpd]
|
||
listenUrl = http://*:8080/
|
||
cookieSecure = false
|
||
cookieSameSite = NONE
|
||
cookiePath = /
|
||
```
|
||
|
||
## 重要提示
|
||
|
||
**这是浏览器的安全策略限制**,不是服务器配置问题。服务器端已经发送了 Cookie,但浏览器因为安全策略拒绝保存。
|
||
|
||
请先尝试**方案一**(修改 Chrome 的 SameSite 标志),这是最可能成功的方案。
|
||
|