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

使用Ajax加载资源失败:Django模型数据访问403错误求助

解决Django中Ajax POST请求403 Forbidden的问题

嘿,这个403错误太常见啦!你遇到的问题是Django自带的CSRF(跨站请求伪造)保护机制在拦截你的请求——Django会默认拒绝没有携带有效CSRF令牌的POST请求,这是为了防止恶意网站冒充用户提交操作,属于安全防护的正常行为~

下面给你两种最常用的解决办法,选一种适合你的就行:

方法一:通过模板渲染的CSRF令牌提交请求

这种方法适合你的页面是用Django模板渲染的情况:

  1. 首先在你的HTML模板里,任意位置添加Django的CSRF模板标签:
{% csrf_token %}

这个标签会自动生成一个隐藏的input元素,里面包含了当前会话的CSRF令牌值,比如:

<input type="hidden" name="csrfmiddlewaretoken" value="your_csrf_token_here">
  1. 然后在你的jQuery Ajax代码里,获取这个令牌并放到请求的请求头中:
// 获取页面中的CSRF令牌
const csrftoken = $('[name=csrfmiddlewaretoken]').val();

// 发起POST请求
$.ajax({
    url: '/a_solution/',
    type: 'POST',
    // 把CSRF令牌放到请求头里
    headers: {
        'X-CSRFToken': csrftoken
    },
    // 这里填你要提交给后端的数据
    data: {
        'param1': 'your_data_here'
    },
    success: function(response) {
        // 请求成功后的逻辑,比如处理后端返回的模型字符串数据
        console.log('拿到的数据:', response);
    },
    error: function(xhr, status, err) {
        console.log('请求出错:', err);
    }
});

方法二:从Cookie中获取CSRF令牌

如果你的页面没有用Django模板(或者不方便用模板标签),可以直接从浏览器Cookie中获取CSRF令牌——Django默认会把令牌存在名为csrftoken的Cookie里:

  1. 先写一个获取Cookie的小函数:
function getCSRFCookie(name) {
    let cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        const cookies = document.cookie.split(';');
        for (let i = 0; i < cookies.length; i++) {
            const cookie = cookies[i].trim();
            // 匹配目标Cookie
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}
  1. 然后在Ajax请求中使用这个令牌:
const csrftoken = getCSRFCookie('csrftoken');

$.ajax({
    url: '/a_solution/',
    type: 'POST',
    headers: {
        'X-CSRFToken': csrftoken
    },
    data: {
        // 你的请求数据
    },
    success: function(res) {
        // 处理返回的模型数据
    }
});

额外提醒

别想着用@csrf_exempt装饰器跳过CSRF检查哦,除非你的接口是给第三方调用的API(那时候应该用Token认证之类的方案),关闭CSRF保护会带来安全风险,尽量用上面的正规方式解决~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:16:11