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

Express Gateway无法传递multipart/formdata问题求助

问题:Express Gateway转发Multipart文件丢失的解决办法

我使用Express Gateway作为服务网关,其中一个服务需处理图片更新需求。单独运行该服务时,可通过multer解析接收文件;但部署在Express Gateway之后,文件会丢失,请求体中无法获取文件。尝试了以下配置但无效:

policies:
  - request-transformer:
      - action:
            multipart: true
  - cors:
      - action:
          credentials: true
解决方案
  • 调整策略执行顺序
    request-transformer的multipart: true配置本身没问题,但必须放在所有可能修改请求体的策略(比如cors)之前执行,否则multipart数据可能被提前处理导致丢失。调整后的配置示例:

    policies:
      - request-transformer:
          - action:
              multipart: true
      - cors:
          - action:
              credentials: true
    
  • 配置网关的multipart解析器
    Express Gateway默认的body-parser可能会提前消耗multipart请求数据,需要在config.yml的http节点下明确启用并配置multipart解析:

    http:
      parsers:
        multipart:
          enabled: true
          limit: '10mb' # 根据实际文件大小需求调整
    
  • 同步后端multer配置
    确保后端服务的multer配置与网关匹配:比如网关设置的文件大小限制,后端multer的限制值不能小于该数值;同时检查multer是否存在来源限制,避免请求被拦截。

  • 开启代理的请求头保留
    如果上述方案无效,可在proxy策略中添加preserveHostHeader: true,确保请求头完整传递到后端服务:

    policies:
      - request-transformer:
          - action:
              multipart: true
      - proxy:
          - action:
              serviceEndpoint: your-service-name
              preserveHostHeader: true
      - cors:
          - action:
              credentials: true
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:49:56