django使用ajax提交需要csrf,在Django中通过AJAX发布参数时,“ CSRF令牌丢失或不正确”...

本文介绍了如何在Django中处理AJAX请求时处理CSRF保护。你可以通过装饰器@csrf_exempt使视图免于CSRF检查,或者在jQuery中设置头部携带CSRFToken。示例代码展示了如何获取并设置cookie中的CSRFToken,确保每个AJAX请求都包含此安全令牌。
摘要由CSDN通过智能技术生成

您可以通过两种不同的方式发出AJAX发布请求:

告诉您的视图不要检查csrf令牌。这可以通过使用decorator来完成@csrf_exempt,如下所示:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt

def your_view_name(request):

...

要将csrf令牌嵌入每个AJAX请求中,对于jQuery,它可能是:

$(function () {

$.ajaxSetup({

headers: { "X-CSRFToken": getCookie("csrftoken") }

});

});

该getCookie函数从cookie检索csrf令牌的位置。我使用以下实现:

function getCookie(c_name)

{

if (document.cookie.length > 0)

{

c_start = document.cookie.indexOf(c_name + "=");

if (c_start != -1)

{

c_start = c_start + c_name.length + 1;

c_end = document.cookie.indexOf(";", c_start);

if (c_end == -1) c_end = document.cookie.length;

return unescape(document.cookie.substring(c_start,c_end));

}

}

return "";

}

另外,jQuery 有一个用于访问cookie 的插件,类似这样:

// set cookie

$.cookie('cookiename', 'cookievalue');

// read cookie

var myCookie = $.cookie('cookiename');

// delete cookie

$.cookie('cookiename', null);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值