使用curl调用Gerrit API返回not found无法访问问题求助
Gerrit API返回not found排查方案
- 补全API身份前缀
Gerrit所有需要身份校验的REST API都要求路径前缀加/a,未加前缀时哪怕传入了账号信息也会被识别为匿名请求,若目标变更非公开可读,就会返回not found,将请求路径修改为https://gerrit_url/a/changes/12345即可。 - 确认Change标识格式正确
你当前使用的12345需为Gerrit分配的全局唯一数值ID,如果你要查询的是I开头的字符串格式Change-Id,需要补全项目名~分支名~Change-Id的完整标识,单独传入字符串Change-Id会匹配不到资源返回404。 - 校验账号权限与凭据有效性
Gerrit出于安全策略,当账号没有目标变更所属项目的访问权限时,会直接返回not found而非403权限错误。需确认你使用的密码是Gerrit个人设置页生成的专用HTTP API密码,不是网页登录密码,且对应账号有目标项目的访问权限。 - 移除冗余请求头
GET请求没有请求体,不需要携带Content-Type请求头,该参数虽不会直接导致404,但移除可避免不必要的兼容性问题。
修正后请求示例
curl -X GET --user http_username:http_password https://gerrit_url/a/changes/12345
内容的提问来源于stack exchange,提问作者Vinod
相关产品推荐
相关产品推荐

