我正在尝试下载私有存储库的 Github 问题中引用的文件(上传到问题的文件,而不是存储库中的文件!)。
公共存储库不存在这个问题:可以直接下载文件。
当我在浏览器中执行此操作时(通过其 URL) 它有效(因为浏览器已经通过身份验证),但是当我尝试使用
curl
执行此操作时,我收到 Not found
错误。
curl https://github.com/myorg/myrep/files/15202661/00061628.pdf --header 'Authorization: token ...'
Github API 交互效果很好:
curl https://api.github.com/user --header 'Authorization: token ...
显然,问题在于身份验证,适用于 https://api.github.com 的身份验证方法无法用于 https://github.com/。
目前,我正在进行基于 cookie 的身份验证,一切正常:
$ curl https://github.com/myorg/myrep/files/15202661/00061628.pdf --cookie 'cookie_name=cookie_value' -L -o 00061628.pdf
(works fine)
但这有点hacky,所以我正在寻找真正的解决方案。
community.github.com 和 GitHub 上有大量问题和票证描述了这个问题,但到目前为止我还没有找到任何合理的答案。
也许你们中的一些人有解决方案?
这与 HTTP 请求标头无关。在 GitHub 上,真正的文件链接并不是我们在浏览器中看到的文件链接。
以 https://github.com/mozilla/pdf.js/blob/master/examples/learning/helloworld.pdf 为例,
curl
这个链接会返回状态码 302 并且什么也不输出,只需添加 -L
按照重定向即可成功下载。
curl -L https://github.com/mozilla/pdf.js/blob/master/examples/learning/helloworld.pdf