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

Django部署AWS EC2后注册提示Forbidden(CSRF cookie not set)求助

排查AWS EC2部署站点CSRF Cookie未设置问题的具体步骤

1. 核对settings.py核心配置

  • 确保MIDDLEWARE中包含django.middleware.csrf.CsrfViewMiddleware,且顺序必须在SessionMiddleware之后、CommonMiddleware之前:
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',  # 位置不能错
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        # 其他中间件...
    ]
    
  • 检查CSRF_TRUSTED_ORIGINS,必须将EC2公网IP/自定义域名(带协议)加入列表:
    CSRF_TRUSTED_ORIGINS = ['https://your-ec2-domain.com', 'http://1.2.3.4']
    
  • 若用公网IP访问,不要设置SESSION_COOKIE_DOMAIN和CSRF_COOKIE_DOMAIN;若用自定义域名,可设置为.your-domain.com(适配子域名)。

2. 验证register.html的CSRF令牌渲染

  • 访问注册页后右键查看源码,确认form标签内存在<input type='hidden' name='csrfmiddlewaretoken' value='xxx'>,而非直接显示{% csrf_token %}(若显示模板标签,说明模板渲染异常)。
  • 确认表单method为POST,且提交URL与视图处理URL完全匹配(避免http/https协议差异)。

3. 检查服务器运行环境

  • 禁止使用python manage.py runserver启动生产服务,改用gunicorn/uwsgi等生产级服务器,示例启动命令:
    gunicorn --bind 0.0.0.0:8000 your_project.wsgi:application
    
  • 若用Nginx反向代理,必须配置请求头传递:
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;  # 关键,传递请求协议
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    缺少X-Forwarded-Proto会导致Django无法识别正确协议,进而影响CSRF Cookie设置。

4. 确认视图函数的CSRF保护

  • 函数视图需添加@csrf_protect装饰器:
    from django.views.decorators.csrf import csrf_protect
    
    @csrf_protect
    def register(request):
        # 视图逻辑
    
  • 类视图需继承自带CSRF保护的基类(如FormView),若用DRF视图,确保对session认证的请求启用CSRF保护。

5. 浏览器端Cookie检查

  • 打开开发者工具(F12)→Application标签,确认存在csrftoken和sessionid Cookie。
  • 检查Cookie属性:若站点用HTTPS,需设置CSRF_COOKIE_SECURE = True;若用HTTP,则禁用该配置(否则浏览器不会保存Cookie)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:29:56