You need to enable JavaScript to run this app. 使用PowerShell下载GitHub私有仓库ZIP包时触发(406) Not Acceptable错误
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell下载GitHub私有仓库ZIP包时触发(406) Not Acceptable错误

406 报错根因

这个报错是请求头和资源校验不匹配直接触发的:

  • 代码里写的Accept值application/vnd.github.v3.raw,是GitHub专门给单文件原始内容拉取接口用的响应格式,和仓库归档ZIP包的资源类型完全不匹配
  • 浏览器能正常下载,是因为浏览器默认发送的Accept是多类型通配值,没有硬卡响应格式,不会触发GitHub的内容协商拦截
调整方案
  • 删掉代码里错误的自定义Accept头,或者直接把这个字段值改成通配的*/*,绕开严格的格式匹配校验
  • 把原授权头里的Token $token格式替换成Bearer $token,提升GitHub对私仓归档接口的权限识别兼容性
  • 保留Invoke-RestMethod的-OutFile参数配置即可,这个参数会直接把服务器返回的二进制流写入本地文件,不需要额外指定响应内容类型
修正后可直接运行的代码
$token = "MyGitToken";
$repo = "https://github.com/my-private-repo/archive/master.zip";
$targetFile = "./master.zip";
$restRequest = @{
    Method  = "Get"
    Uri     = "$repo"
    Headers = @{
        Authorization = "Bearer $token"
        # 已移除原配置中会触发406的错误Accept头
    }
};

Invoke-RestMethod @restRequest -OutFile $targetFile;
补充注意事项
  • 不要手动给ZIP下载请求硬加Accept: application/zip的固定值,旧版GitHub接口对这个固定值的校验逻辑存在兼容问题,依然可能触发406,要么删除自定义Accept头,要么设为通配值的兼容性最好
  • 如果目标分支不是master,记得把URI路径里的分支名替换为实际值,避免衍生404报错

内容的提问来源于stack exchange,提问作者user007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 04:45:04