某些项目的GitLab Pages API 404错误
我一直在编写自动化脚本,使用Namesilo、Letsencrypt和Gitlab API生成和更新SSL证书。 我快结束了,但是在试图更新Gitlab上的SSL证书时,我遇到了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
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访问”生成的。