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

Amazon S3 + Django大文件上传出现400 Bad Request错误求助

Django对接S3大文件上传400 Bad Request排查方案
  • 排查S3 Bucket自身CORS配置
    Django的CORS_ALLOW_ALL_ORIGINS仅控制自身服务的跨域规则,和S3 Bucket的跨域策略无关。必须在AWS控制台为目标Bucket配置正确的CORS规则:

    <CORSConfiguration>
        <CORSRule>
            <AllowedOrigin>*</AllowedOrigin> <!-- 测试环境临时用,上线后替换为你的前端域名 -->
            <AllowedMethod>POST</AllowedMethod>
            <AllowedMethod>PUT</AllowedMethod>
            <AllowedHeader>*</AllowedHeader>
            <ExposeHeader>ETag</ExposeHeader>
        </CORSRule>
    </CORSConfiguration>
    
  • 检查签名生成逻辑
    核对views.py中的签名代码细节:

    • 确认AWS区域和Bucket所在的eu-north-1完全一致
    • 文件路径(key)不能包含未转义的特殊字符
    • 签名过期时间设置在合理范围(比如30分钟内)
    • 所用AWS密钥必须拥有S3的PutObject权限
  • 验证前端请求参数
    检查jQuery上传代码里的POST参数是否完整且正确:
    必须包含key、AWSAccessKeyId、policy、signature、file这几个核心字段,注意参数名大小写不能出错,file必须是合法的文件对象。

  • 核对Bucket信息
    确认请求的Bucket域名fakebucket.s3-eu-north-1.amazonaws.com中:

    • Bucket名称和你实际创建的完全一致
    • 区域eu-north-1正确,S3区域域名格式符合要求(部分旧区域的域名格式存在差异)
  • 检查Content-Type匹配
    确认前端请求的Content-Type和签名生成时策略中允许的Content-Type一致,若策略里限制了Content-Type范围,前端必须传递对应的类型值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:30:57