我一直在编写自动化脚本,使用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"工作良好,并获取项目short-links中域short-links的详细信息。
但是,跑步:
curl --header "Private-Token: XXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fpallavagarwal07.gitlab.io/pages/domains/varstack.com"返回404错误。然而,更奇怪的是,如果我将域名varstack.com从URL中删除,它就会给出所期望的域名列表:
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":....]发布于 2017-12-06 16:02:57
我终于弄明白了(尽管我仍然会把它归类为GitLab的一个bug )。
ID需要进行url编码,这就是为什么我将存储库名称中的/替换为%2F的原因。但是,字符.不应该是一个问题(前一个-中的-没有引起任何问题)。但是,用.代替%2E会产生预期的(正确的)结果。
我觉得这是个问题,因为:
.,没有域名的URL也能完美地工作,包括添加新域的API (它也将域作为表单参数,而不是在URL中)。TL;DR
使用:
pallavagarwal07%2Fpallavagarwal07%2Egitlab%2Eio而不是
pallavagarwal07%2Fpallavagarwal07.gitlab.io在URL中让它工作。
https://stackoverflow.com/questions/47677846
复制相似问题