某些项目的GitLab Pages API 404错误

某些项目的GitLab Pages API 404错误,gitlab,gitlab-api,gitlab-pages,Gitlab,Gitlab Api,Gitlab Pages,我一直在编写自动化脚本,使用Namesilo、Letsencrypt和Gitlab API生成和更新SSL证书。 我快结束了,但是在试图更新Gitlab上的SSL证书时,我遇到了404错误 奇怪的是,这个错误只发生在我的两个项目中的一个。具体而言,运行: curl --header "Private-Token: XXXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fshort-links/pages/domains/pall

我一直在编写自动化脚本,使用Namesilo、Letsencrypt和Gitlab API生成和更新SSL证书。 我快结束了,但是在试图更新Gitlab上的SSL证书时,我遇到了404错误

奇怪的是,这个错误只发生在我的两个项目中的一个。具体而言,运行:

curl --header "Private-Token: XXXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fshort-links/pages/domains/pallav.xyz"
curl --header "Private-Token: XXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fpallavagarwal07.gitlab.io/pages/domains/varstack.com"
工作正常,在project
短链接中获取域
pallav.xyz
的详细信息

但是,跑步:

curl --header "Private-Token: XXXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fshort-links/pages/domains/pallav.xyz"
curl --header "Private-Token: XXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fpallavagarwal07.gitlab.io/pages/domains/varstack.com"
返回404错误。然而,更奇怪的是,如果我从URL中删除域名
varstack.com
,它会给我预期的域列表:

curl --header "Private-Token: XXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fpallavagarwal07.gitlab.io/pages/domains"
返回:

[{"domain":"varstack.com","url":"https://varstack.com","certificate":....]
我终于找到了答案(尽管我仍然将其归类为GitLab的一个bug)

ID需要进行url编码,这就是为什么我将存储库名称中的
/
替换为
%2F
。但是,字符
不应该是问题(前一个URL中的
-
没有引起任何问题)。但是,将
替换为
%2E
会产生预期的(正确的)结果

我认为这是一个错误,因为:

  • 未记录此行为(允许使用哪些字符?)
  • 没有域名的URL即使没有编码也能完美地工作,包括添加新域的API(它也将域作为表单参数,而不是URL中的域)
  • TL;博士

    使用:

    pallavagarwal07%2Fpallavagarwal07%2Egitlab%2Eio
    
    而不是

    pallavagarwal07%2Fpallavagarwal07.gitlab.io
    

    在URL中使其工作。

    您可以检查用户的权限吗?可能是related@djuarez在这两种情况下,用户都是所有者pallavagarwal07。我在所有情况下都使用相同的令牌。令牌是使用第一个特权“完全读/写API访问”生成的。