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

使用Ansible get_url模块下载CDN后文件返回403错误

问题:Ansible下载JFrog Distribution包返回403 Forbidden错误

问题场景

我尝试使用Ansible的get_url模块下载JFrog Distribution包,任务代码如下:

- name: Download File 
  get_url:
    url: "https://releases.jfrog.io/artifactory/jfrog-distribution/distribution-deb/2.22.2/jfrog-distribution-2.22.2-deb.tar.gz" 
    dest: "/tmp/jfrog-distribution-2.22.2-deb.tar.gz"

执行后返回403禁止访问错误:

fatal: [server]: FAILED! => {
  "changed": false, 
  "dest": "/tmp/jfrog-distribution-2.22.2-deb.tar.gz",
  "elapsed": 80,
  "msg": "Request failed",
  "response": "HTTP Error 403: Forbidden",
  "status_code": 403,
  "url": "https://releases.jfrog.io/artifactory/jfrog-distribution/distribution-deb/2.22.2/jfrog-distribution-2.22.2-deb.tar.gz"
}

同一机器上使用curl命令(注:原命令末尾有多余的>符号,实际执行需去掉)下载正常:

curl -L "https://releases.jfrog.io/artifactory/jfrog-distribution/distribution-deb/2.22.2/jfrog-distribution-2.22.2-deb.tar.gz" -o jfrog-distribution-2.22.2-deb.tar.gz

我也曾尝试使用Ansible的uri模块并设置follow_redirects: yes,但仍然返回相同的403错误:

[server]: FAILED! => {
  "changed": false, 
  "dest": "/tmp/jfrog-distribution-2.22.2-deb.tar.gz", 
  "elapsed": 80, 
  "msg": "Request failed", 
  "response": "HTTP Error 403: Forbidden",
  "status_code": 403, 
  "url": "https://releases.jfrog.io/artifactory/jfrog-distribution/distribution-deb/2.22.2/jfrog-distribution-2.22.2-deb.tar.gz"
}

原本猜测是Ansible的代理被过滤,但测试发现curl 7.71.1-DEV版本下载也失败,想知道问题出在哪里?

可能的原因及解决方向

  • User-Agent 拦截:JFrog服务器可能会根据请求的User-Agent字段拦截非标准工具的请求。curl默认的User-Agent与Ansible模块(基于urllib)的不同,可在Ansible任务中手动设置User-Agent为curl的格式:
    对于get_url模块,添加参数:
    headers: {"User-Agent": "curl/7.71.1-DEV"}
    
    对于uri模块,同样添加headers参数。
  • 重定向处理差异:虽然设置了follow_redirects: yes,但Ansible与curl的重定向逻辑可能存在区别(比如是否保留请求头、处理Cookie)。可使用curl -v查看完整请求流程,再在Ansible中模拟对应的请求头。
  • 请求头缺失:curl会自动添加部分必要请求头(如Accept、Host),而Ansible模块默认可能未添加。对比两者的请求头,补充缺失字段。
  • 版本访问限制:JFrog部分旧版本包可能设置了访问限制,可确认该版本是否仍公开可用,或更换新版本测试。
  • 环境变量差异:Ansible执行时可能使用了与curl不同的环境变量(如代理设置),可在任务中显式设置use_proxy: no排除代理问题,或检查执行Ansible时的环境变量是否与curl一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:54:52