【问题标题】:How do I curl against a git.io URL generated from a private repo?如何针对从私人仓库生成的 git.io URL 卷曲?
【发布时间】:2021-12-09 08:55:12
【问题描述】:

我有一个脚本,我希望能够通过 curl 命令访问它的 https://raw.githubusercontent.com/... 位置。使用 git.io,很容易将此 URL 缩短为 https://git.io/ABCDE 之类的内容。

但是有一个问题与我的脚本存在于私有存储库中这一事实有关。如果我直接卷曲 githubusercontent URL,我会得到 404: Not Found。我可以通过在请求中传递授权标头来绕过它,例如

$ curl -H "Authorization: token <My Github Personal Access Token>" \
https://raw.githubusercontent.com/...
> !#/bin/bash
... # rest of script

但是,当我使用缩短的 URL 时,我什么也得不到。甚至没有 404。

$ curl -H "Authorization: token <My Github Personal Access Token>" \
https://git.io/ABCDE
$

有人知道这里发生了什么吗?

【问题讨论】:

    标签: github curl


    【解决方案1】:

    URL 缩短器的工作方式是发出某种 3xx 系列 HTTP 状态代码,将您重定向到新位置,然后您针对该新位置发出请求。但是,默认情况下,curl 不遵循重定向,因此您在发出请求时看到的只是 git.io 的输出,在这种情况下什么都没有。

    如果你想跟随重定向,那么你应该使用-L 选项来curl,这将使它跟随重定向。请注意,在传递凭据时,这在许多情况下可能是不安全的,因为使用 -H 传递的任何凭据都将传递到数据重定向到的任何远程服务器。在这种情况下,这就是您想要的,但在其他情况下,如果凭据仅用于原始服务器,则可能会出现安全问题。

    【讨论】:

    • 谢谢!这是一个很棒的答案,并且准确地解释了我需要知道的内容。
    • 请注意,从 curl 7.58.0 开始,您还必须使用 --location-trusted。请参阅此相关评论:stackoverflow.com/a/50005430/11899595
    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 2013-08-12
    • 2019-07-09
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多