对于我的项目,我需要知道 git 存储库是否公开才能执行某些操作。
我首先想到使用 HTTP 请求,所以我使用邮递员,并尝试使用 HEAD 方法使用多个 URL。
当我发送请求时,我看不到标头中的内容可以指示我何时失败。
当我向 github 发送私有项目请求时,我收到状态 404,所以它对我来说非常适合,因为我知道这是一个私有项目。
但是当我为 gitlab 执行此操作时,我收到状态 200,然后我被重定向。
我想知道是否有解决方案。
一般来说,最简单的方法是执行GET
追加后请求/info/refs?service=git-upload-pack
到网址。这是 Git 用于获取参考信息的端点。
如果存储库是公共的,您将收到 200。如果存储库是私有的或不存在,您可能会收到 401。大多数主要托管提供商在您经过身份验证之前不会提供有关私有存储库是否存在的信息,因此无论哪种方式您都会收到 401。
请注意,您不能使用HEAD
要求;在这种情况下,GitHub 返回 405 Method Not allowed。
Example:开源存储库:https://gitlab.com/gitlab-org/gitlab-ce.git https://gitlab.com/gitlab-org/gitlab-ce.git
{GET}: https://gitlab.com/gitlab-org/gitlab-ce.git/info/refs?service=git-upload-pack https://gitlab.com/gitlab-org/gitlab-ce.git/info/refs?service=git-upload-pack
示例401:
wget $URL
Connecting to gitlab.com (35.231.145.151:80)
Connecting to gitlab.com (35.231.145.151:443)
wget: server returned error: HTTP/1.1 401 Unauthorized
echo $?
1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)