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

使用wget下载GitHub Actions artifact返回400错误的解决方案咨询

报错原因

出现400 Bad Request和权限无关,基本是两个原因导致的:

  • 执行wget命令时未给URL加引号,Shell会将URL中的&解析为后台运行标识符,实际传给wget的URL在第一个&处被截断,缺失签名、过期时间等必填参数,自然被服务端拒绝。
  • 该签名下载端点对非浏览器请求有基础校验,wget默认携带的User-Agent、Accept请求头不符合端点要求,即使URL完整也会被拦截。
可行方案

不需要换特殊工具,wget本身就可以正常下载,调整命令参数即可:

方案1:使用wget下载

执行时用双引号包裹完整URL,同时补充必要请求头模拟浏览器请求即可:

wget -O my-artifact.zip \
  --header="Accept: application/octet-stream" \
  --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" \
  "替换为你拿到的完整签名下载URL"

参数说明:

  • -O my-artifact.zip:指定下载后的保存文件名,避免端点返回的默认文件名乱码
  • 双引号包裹URL:必须加,防止Shell截断URL参数
  • 补充的两个请求头:绕过端点对非浏览器请求的拦截

方案2:使用curl下载

如果wget调整后仍报错,直接用你之前调用GitHub API的curl工具即可,兼容性更好:

curl -L -o my-artifact.zip \
  -H "Accept: application/octet-stream" \
  "替换为你拿到的完整签名下载URL"

参数说明:

  • -L:必须加,该端点下载时会触发302重定向,不加这个参数只会拿到重定向响应而不是实际文件
  • 同样需要用双引号包裹完整URL

注意:你获取到的签名链接有效期仅1分钟,必须在链接过期前执行下载命令,过期后需要重新调用GitHub API获取新的链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:06:26