2017-12-06 1 views
0

Namesilo, Letsencrypt 및 Gitlab API를 사용하여 SSL 인증서를 생성하고 업데이트하는 자동화 스크립트를 작성했습니다. 거의 끝났지 만 Gitlab에서 SSL 인증서를 업데이트하려고 할 때 404 오류가 발생합니다.특정 프로젝트에서 GitLab Pages API 404 오류가 발생했습니다.

이상한 부분은 내 두 프로젝트 중 하나에서만 오류가 발생한다는 것입니다. 특히, 실행 :

curl --header "Private-Token: XXXXXX" "https://gitlab.com/api/v4/projects/pallavagarwal07%2Fshort-links/pages/domains/pallav.xyz" 

잘 작동 및 프로젝트 short-links의 도메인 pallav.xyz의 세부 사항을 가져옵니다. 실행

그러나이 : ​​

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

404 오류를 반환합니다.

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":....] 
+0

사용자의 권한을 확인할 수 있습니까? 관련이있을 수 있습니다. – djuarez

+1

@djuarez 사용자는 두 경우 모두 pallavagarwal07 소유자입니다. 모든 경우에 동일한 토큰을 사용하고 있습니다. 토큰은 첫 번째 권한 "전체 읽기/쓰기 API 액세스"를 사용하여 생성됩니다. –

답변

0

나는 마침내 그것을 알아 냈 그러나, 무엇을 만드는 것은 그것은 괴상 나는 URL에서 도메인 이름 varstack.com을 제거하면, 그것은 나에게 예상대로 도메인의 목록을 제공한다는 것입니다 (비록 내가 GitLab에서 여전히 버그로 분류 할지라도).

ID를 URL로 인코딩해야하므로 %2F으로 저장소 이름에 /을 (를) 대체했습니다. 그러나 문자 .은 문제가되지 않아야합니다 (이전 URL의 -은 아무 문제가 없었습니다). 그러나 .%2E으로 바꾸면 예상 (올바른) 결과가 나타납니다.

나는이 버그 때문에 생각 (? 문자가 허용되는) 문서화되어 있지 않습니다

  1. 이 동작.
  2. 도메인 이름이없는 URL은 .을 인코딩하지 않아도 완벽하게 작동합니다. 여기에는 새 도메인을 추가하는 API (URL은 양식 매개 변수로 도메인을 사용함)가 포함됩니다.

TL; DR

사용 :

pallavagarwal07%2Fpallavagarwal07%2Egitlab%2Eio 

대신 URL에

pallavagarwal07%2Fpallavagarwal07.gitlab.io 

의이 작동합니다.

관련 문제