检查git repo是否通过HTTP请求公开

时间:2019-03-02 14:33:41

标签: git http-headers httprequest

对于我的项目,我需要知道git repo是否公开。 我首先想到要使用HTTP请求,所以我使用的是邮递员,并且尝试使用HEAD方法处理多个URL。

我发送请求时,看不到标题中的内容可以指示我何时失败。

当我向github发送一个私有项目的请求时,我收到状态404,因此对我来说是完美的,因为我知道这是一个私有项目。

但是当我对gitlab执行此操作时,我会收到状态200,然后将我重定向。

我想知道是否有解决方案。

1 个答案:

答案 0 :(得分:3)

通常,最简单的方法是将GET附加到URL之后执行/info/refs?service=git-upload-pack请求。这就是Git用来获取参考信息的端点。

如果回购是公开的,则将获得200。如果存储库是私有的或不存在,则可能会收到401。大多数主要的托管服务提供商只有在通过身份验证后才提供有关是否存在私有存储库的信息,因此您将以两种方式获得401。

请注意,您不能使用HEAD请求;在这种情况下,GitHub返回不允许的405方法。