django的post请求出现csrf问题

这里不推荐关闭csrf认证,如有需要可以在setting中将’django.middleware.csrf.CsrfViewMiddleware’这个中间件注释

  • 一般视图

如下视图,直接使用@csrf_exempt这个装饰器即可,这个基本都会解决的

@csrf_exempt
def csrf_test(request):
    return JsonResponse()
  • 继承APIView的视图

使用@method_decorator(csrf_exempt, name=‘post’)装饰器,这个方法是从网上找的,但我失败了

@method_decorator(csrf_exempt, name='post')
class Danmu_Handle(APIView):
	def post(self, request, *args, **kwargs):
		return JsonResponse()

或者在前端发送时数据额外添加一条数据,这是ajax全局设置,作用是在发送每一次请求时都会附加这个csrfmiddlewaretoken数据,而这个数据是我在cookie中获取的,使用了jquery.cookie.js插件,或者使用document.cookie得到所有cookie然后分隔。

token = $.cookie('csrftoken');
$.ajaxSetup(
        {
            data: {'csrfmiddlewaretoken': token}
        }
    )

在前端添加数据的做法肯定是可行的,但如果从后端着手,不管是修改REST_FRAMEWORK的认证类,还是增加跨域忽略,都会出现403,尽管如此我还是不想关闭csrf。希望次文章能够帮助需要的小伙伴们,也请有其他解决办法的大佬相互讨论下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值