GitHub Releases下载链接重定向不生效,访问最新版本下载链接返回404如何解决
GitHub 最新Release下载链接返回404的原因及解决方案
你使用的https://github.com/<所有者>/<仓库名>/releases/latest/download/<文件名>路径有严格的适用规则,不符合规则就会返回404,针对你举的storybook仓库的例子,最直接的原因就是该仓库最新Release的上传资产中,不存在名为package.zip的文件,路径中的文件名必须和Release Assets里的文件完全一致(含大小写、后缀)。
以下是所有容易遗漏的规则:
- 规则1:该路径仅适用于下载Release中手动上传的资产文件
GitHub会为每个Release自动生成源码压缩包,但这类文件不属于用户上传的Assets,不能通过releases/latest/download/路径下载。如果你需要下载最新版源码,要先获取最新Release对应的标签名,再拼接源码地址:
Zip格式:https://github.com/<所有者>/<仓库名>/archive/refs/tags/<标签名>.zip
Tar.gz格式:https://github.com/<所有者>/<仓库名>/archive/refs/tags/<标签名>.tar.gz - 规则2:latest仅指向最新正式版Release
如果仓库的最新版本是标注为「Pre-release」的预发布版本,latest不会指向该版本,访问预发布版本的资产会返回404。 - 规则3:私有仓库需要授权
访问私有仓库的Release资产时,如果请求没有带有效授权凭证,GitHub会直接返回404伪装成资源不存在,避免泄露私有仓库信息。
如果需要动态获取多个仓库的最新Release下载地址,推荐统一通过GitHub API操作:
- 调用接口
GET https://api.github.com/repos/<所有者>/<仓库名>/releases/latest获取最新正式版的完整信息,预发布版本可以调用GET https://api.github.com/repos/<所有者>/<仓库名>/releases取返回列表的第一个条目 - 从返回结果的
assets字段中匹配你需要的资产文件,直接取browser_download_url字段的值作为下载地址 - 如果需要下载源码包,取返回结果的
tag_name字段拼接上文给出的源码地址即可 - 访问私有仓库时,给API请求和下载请求的Header中添加
Authorization: token <你的个人访问令牌>,令牌需要配置对应仓库的读取权限
内容的提问来源于stack exchange,提问作者anonymoose
相关产品推荐
相关产品推荐

