当使用名称空间/projectname而不是id时,Gitlab api v4在项目搜索时返回404
我尝试将Gitlab工作流插件用于VS代码。不幸的是,它没有找到我的项目。我调试了它,发现它调用当使用名称空间/projectname而不是id时,Gitlab api v4在项目搜索时返回404,gitlab,apache2,gitlab-api,gitlab-ce,Gitlab,Apache2,Gitlab Api,Gitlab Ce,我尝试将Gitlab工作流插件用于VS代码。不幸的是,它没有找到我的项目。我调试了它,发现它调用 https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject 然后api返回 { error: "404 Project Not Found" } 这应该按照计划进行 如果我呼叫https://mydomain/gitlab/api/v4/projects/:id其中id是我得到的项目编号 path_with_names
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,现在使用升级到最新版本13(13.0.6)
我试过几个项目,但都没有成功
我是项目的维护者
访问令牌具有api和读取用户身份的权限
很明显我遗漏了什么。但是什么呢
编辑:
我的设置是将docker容器放在反向代理apache后面。可能授权没有按预期工作。插件发送头PRIVATE-TOKEN
。我将检查头是否传递给api
没有。docker容器接收PRIVATE-TOKEN头
编辑2:
我建立了一个公共组和一个公共项目来消除身份验证问题。还是不行。搜索返回404
编辑3:
由于Dashrath Mundkar询问curl命令:
curl -H "PRIVATE-TOKEN:XXXXXXX" https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject
嗯。我找到了答案,它有点特定于我的设置 因为它可能与其他在Gitlab前面使用Apache2.4作为反向代理的人也非常相关,所以我回答了自己的问题 我的Apache配置包含
allowencodedslass NoDecode
,因此对Gitlab的请求可以包含Api所需的URL编码路径,例如mygroup%2Fmyproject
(否则Apache将已经抛出404,请参阅)
不幸的是,这还不够。通常也是这样
因此,我的后端收到了mygroup%252Fmyproject
(注意添加的25,在%2F中编码%char),这导致了Gitlab的404
在我将Apache配置更改为
ProxyPass/gitlab之后http://gitlab.local:80/gitlab nocanon
(我添加了nocanon)一切正常。可以分享您如何使用full curl命令调用api(显然隐藏您的url和令牌,只需将XXXX放在那里并粘贴在这里)我也面临着这个问题,但在GitLab中打开WebIDE时,WebIDE本身加载良好,但找不到项目。我必须同时添加,allowencodedslass NoDecode
以及nocanon
附录。