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

Curl请求成功但JavaScript fetch无请求日志——AWS EC2跨子网问题排查

问题根源及解决办法

这不是浏览器故障,核心原因是浏览器的同源策略限制——你的JS网页运行在公有子网的实例(假设其公网IP/端口为A),而请求的目标是私有子网的Django服务器IP(10.0.136.201:8080),两者属于不同的源,浏览器会先发起OPTIONS预检请求,若Django未配置CORS(跨域资源共享)规则,预检请求失败后,浏览器不会发送实际的POST请求,自然服务器端看不到日志。

而curl是命令行工具,不受同源策略约束,直接发送POST请求,所以服务器能正常接收并响应。

解决步骤:

  • 安装Django的CORS处理包:
    pip install django-cors-headers
    
  • 修改Django项目的settings.py文件:
    1. 在INSTALLED_APPS中添加:
      'corsheaders',
      
    2. 在MIDDLEWARE中添加(注意要放在django.middleware.common.CommonMiddleware之前):
      'corsheaders.middleware.CorsMiddleware',
      'django.middleware.common.CommonMiddleware',
      
    3. 配置允许跨域的源:
      • 测试环境可临时允许所有源(生产环境禁用):
        CORS_ALLOW_ALL_ORIGINS = True
        
      • 生产环境指定你的JS网页所在实例的公网IP/端口:
        CORS_ALLOWED_ORIGINS = [
            "http://你的网页实例公网IP:端口",
        ]
        
  • 重启Django服务器,再用浏览器测试fetch请求即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:12:18