You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

curl从GitHub私有库下载zip正常,Go代码执行该命令返回404?

问题分析与解决:Go执行curl命令下载GitHub私有文件返回"Not Found"

你遇到的问题核心是exec.Command的参数传递格式错误,具体问题和修复方法如下:

错误原因

在shell中执行curl时,单引号'是用来避免shell解析空格等特殊字符的语法,但在Go的exec.Command中,每个参数都是独立的字符串,不需要额外加单引号。你现在给-H的参数值套了单引号,导致curl实际发送的请求头是:

'Authorization: token <Token>'
'Accept: application/vnd.github.v3.raw'

这些包含单引号的请求头是无效的,GitHub无法识别你的授权信息,自然返回"Not Found"的错误。

另外你还漏掉了原curl命令中的-J参数,这个参数用于让curl根据响应头的Content-Disposition自动设置文件名,建议补上。

修正后的Go代码

cmd := exec.Command("curl", 
    "-H", "Authorization: token <Token>", 
    "-H", "Accept: application/vnd.github.v3.raw", 
    "-J", "-L", "-O", 
    "https://api.github.com/repos/<owner>/<repo-name>/contents/abc.zip")
err := cmd.Run() // 建议用Run()而非Start(),能直接捕获执行错误
if err != nil {
    // 处理错误,比如打印日志或返回错误信息
}

额外提醒

  • 用cmd.Run()替代cmd.Start(),后者只会启动命令但不等待执行完成,也不会返回执行错误,不利于排查问题。
  • 敏感信息(如个人访问令牌)建议通过环境变量传递,不要硬编码在代码里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:12:21