使用命名空间/项目名称而不是 id 时,Gitlab api v4 在项目搜索时返回 404

问题描述 投票:0回答:3

我尝试使用 VS Code 的 Gitlab 工作流插件。不幸的是它没有找到我的项目。我调试了一下,发现调用了

https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject

API 返回

{
error: "404 Project Not Found"
}

这应该根据文档工作。

如果我打电话

https://mydomain/gitlab/api/v4/projects/:id
,其中 id 是我得到的项目编号

path_with_namespace: "mygroup/myproject",

浏览互联网,我发现有些人声称这对他们也不起作用,但没有解决方案。其他人说这对他们来说非常有效。

我已经尝试使用 Gitlab CE 12.x.x,现在使用 https://github.com/sameersbn/docker-gitlab

升级到最新版本 13 (13.0.6)

我尝试过几个项目都无济于事。

我是项目的维护者。

访问令牌具有插件请求的权限 api 和 read_user。

显然我错过了一些东西。但什么?

编辑:

我的设置是将 docker 容器置于反向代理 apache 后面。也许授权没有按预期工作。该插件发送一个标头

PRIVATE-TOKEN

。我将检查标头是否已传递到 api。

不。 PRIVATE-TOKEN 标头由 docker 容器接收。

编辑2:

我建立了一个公共小组和一个公共项目来消除身份验证问题。还是不行。搜索返回 404。

编辑3:

自从 Dashrath Mundkar 询问了 curl 命令:

curl -H "PRIVATE-TOKEN:XXXXXXX" https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject
    
gitlab apache2 gitlab-api gitlab-ce
3个回答
7
投票
好的。我找到了答案,它与我的设置有些特定。

由于它可能与其他在 Gitlab 上使用 Apache 2.4 作为反向代理的人非常相关,所以我回答我自己的问题。

我的 Apache 配置包含

AllowEncodedSlashes NoDecode

,以便对 Gitlab 的请求可以包含 Api 所需的 urlencoded 路径,例如 
mygroup%2Fmyproject
(否则 Apache 已经抛出 404,请参阅
AllowEncodedSlashes

不幸的是这还不够。通常,

mod_proxy 也会规范化 ProxyPassed URLs

所以我的后端收到了

mygroup%252Fmyproject

(注意添加了 25,在 %2F 中编码了 % 字符),这导致了来自 Gitlab 的 404。

将 Apache 配置更改为

ProxyPass /gitlab http://gitlab.local:80/gitlab nocanon

(我添加了 nocanon)后,一切正常。


0
投票

这对我有用

<VirtualHost *:80> ServerName gitlab.example.lk ProxyRequests Off ProxyPreserveHost On ProxyVia Full <Proxy *> Require all granted </Proxy> AllowEncodedSlashes NoDecode ProxyPass / http://localhost:8181/ nocanon ProxyPassReverse / http://localhost:8181/ RewriteEngine on RewriteCond %{SERVER_NAME} =www.gitlab.example.lk [OR] RewriteCond %{SERVER_NAME} =gitlab.example.lk RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>


0
投票
就我而言,

AllowEncodedSlashes NoDecode

nocanon
还不够,我还必须在
NE
中添加
RewriteRule
标志,这样它看起来像

RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
    
© www.soinside.com 2019 - 2024. All rights reserved.