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

AdonisJS后端API因CORS导致文件上传失败排查求助

碰到这种Docker环境下的跨域问题,我通常会从这几个方向一步步排查,毕竟本地裸跑和容器隔离环境的网络逻辑差异挺大的:

1. 先确认Docker容器间的网络连通性

你当前的前端请求是直接打向主机的3333端口,但容器内部的网络环境和主机是隔离的,很可能存在解析或连通问题:

  • 进入Nginx容器,执行curl http://lemcoe.nato:3333/uploader,看看能不能正常访问后端接口。如果连容器内部都访问不到,那问题大概率在网络层面
  • 检查你的Docker Compose配置,两个容器是不是在同一个自定义网络里?默认的bridge网络有时候主机名解析不稳定,建议手动定义一个网络,然后让前端通过后端容器的名称(比如adonis-api)来访问,比如请求http://adonis-api:3333/uploader,这样能绕过主机的DNS解析,直接在容器网络内部通信

2. 验证AdonisJS的CORS配置是否真的生效

有时候配置文件改了,但容器没重启,或者挂载路径不对导致配置没生效:

  • 进入AdonisJS容器,直接查看config/cors.js的内容,确认和你本地的配置一致
  • 在主机上用curl模拟OPTIONS请求,检查响应头:
    curl -X OPTIONS http://lemcoe.nato:3333/uploader -H "Origin: http://lemcoe.nato:9090" -v
    
    重点看响应里有没有Access-Control-Allow-Origin: *(或者指定的Origin)、Access-Control-Allow-Methods包含POST,以及Access-Control-Allow-Headers包含Content-Type(因为文件上传是multipart/form-data,属于非简单请求)
  • 可以试着把CORS配置里的headers从true改成明确的数组,比如headers: ['Content-Type', 'Accept', 'Authorization'],避免框架对“允许所有头”的解析出现偏差

3. 检查Nginx配置是否干扰了跨域

如果Nginx配置了自己的CORS头,可能和后端返回的头冲突,导致浏览器报错:

  • 查看Nginx的配置文件,有没有添加add_header Access-Control-*之类的规则,如果有,要么删掉,要么确保和后端的CORS规则一致
  • 另外,生产环境更推荐的做法是用Nginx做反向代理,把前端的API请求转发到后端容器,这样前端和后端同域名同端口,彻底消除跨域。比如在Nginx配置里加:
    location /api/ {
        proxy_pass http://adonis-api:3333/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    然后前端把请求地址改成/api/uploader,这样就不需要处理任何CORS问题了

4. 排查主机的防火墙/安全组

生产环境的主机可能有防火墙或安全组限制,导致前端无法访问3333端口:

  • 在主机上执行telnet localhost 3333,确认后端服务正常监听
  • 从前端所在的机器执行telnet lemcoe.nato 3333,看能不能建立连接。如果不行,检查主机的防火墙规则(比如ufw、iptables),或者云服务商的安全组,确保3333端口对前端IP开放

5. 查看AdonisJS的日志,确认请求是否到达后端

有时候OPTIONS请求成功,但POST请求因为后端的业务逻辑错误(比如文件上传目录不存在、权限不足)没返回响应,浏览器会误以为是CORS问题:

  • 执行docker logs <你的adonis容器名称>,查看日志里有没有OPTIONS和POST请求的记录
    • 如果POST请求根本没出现在日志里,说明请求没到达后端,回到网络连通性排查
    • 如果有日志但报错,比如权限问题、路径不存在,就针对性解决后端的业务问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:02:21