1

我一直在编写自动化脚本来使用 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"

工作正常并获取pallav.xyz项目中域的详细信息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":....]
4

1 回答 1

1

我终于弄明白了(尽管我仍然会将其归类为 GitLab 的错误)。

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

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

  1. 此行为未记录(允许使用哪些字符?)。
  2. 即使没有编码,没有域名的 URL 也能完美运行.,包括添加新域的 API(它也将域作为表单参数,而不是在 URL 中)。

TL;博士

使用:

pallavagarwal07%2Fpallavagarwal07%2Egitlab%2Eio

代替

pallavagarwal07%2Fpallavagarwal07.gitlab.io

在 URL 中使其工作。

于 2017-12-06T16:02:57.920 回答