django如何取消csrf限制

  介绍

这篇文章主要介绍了django如何取消csrf限制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强> #导入包

从django.views.decorators.csrf进口csrf_exempt

<强> #使用装饰器即可避免csrf限制

@csrf_exempt   def  add_bookshelf(请求):   user_id 才能=,request.POST.get (& # 39; user_id # 39;)   打印(user_id)才能   return 才能;HttpResponse (& # 39; 123 & # 39;)

<强>补充知识: <强> Django前后端分离跨域AJAX获取csrftoken及获取饼干时遇到的问题

获取csrftoken

Django的中间件& # 39;django.middleware.csrf.CsrfViewMiddleware& # 39;会将csrftoken的值设置在cookie中。在前后端不分离的项目中,若需要在AJAX使用csrftoken的值则可在js脚本中通过文档。饼干直接获取cookie的值(也可以通过其他更快捷的轮子如js-cookie)。

在前后端分离的项目中(已配置django-cors-headers),无法直接使用js从cookie中获取csrfToken的值(浏览器的同源策略),即使已经成功设置了csrfToken的cookie值

 django如何取消csrf限制

<强>解决方法

在中间件中引入

corsheaders.middleware.CorsPostCsrfMiddleware      & # 39;corsheaders.middleware.CorsMiddleware& # 39;   & # 39;django.middleware.security.SecurityMiddleware& # 39;   & # 39;django.contrib.sessions.middleware.SessionMiddleware& # 39;   & # 39;django.middleware.common.CommonMiddleware& # 39;   & # 39;django.middleware.csrf.CsrfViewMiddleware& # 39;   & # 39;corsheaders.middleware.CorsPostCsrfMiddleware& # 39;

有些博客中使用该中间件替代django.middleware.csrf。CsrfViewMiddleware是不可行的,因为该中间件并没有期望中csrf校验的功能,下面为该中间件的源代码。

class  CorsPostCsrfMiddleware (MiddlewareMixin):      def 才能_https_referer_replace_reverse(自我,,请求):   ,,,,,,   ,,,Put 从而HTTP_REFERER  back 用its  original  value 以及delete    ,,,temporary 存储   ,,,,,,   ,,,if  conf.CORS_REPLACE_HTTPS_REFERER 以及& # 39;ORIGINAL_HTTP_REFERER& # 39;,拷贝request.META:   ,,,,,http_referer =, request.META [& # 39; ORIGINAL_HTTP_REFERER& # 39;】   ,,,,,request.META [& # 39; HTTP_REFERER& # 39;],=http_referer   ,,,,,del  request.META [& # 39; ORIGINAL_HTTP_REFERER& # 39;】      def 才能process_request(自我,,请求):   ,,,self._https_referer_replace_reverse(请求)   ,,,return 没有      def 才能;process_view(自我,,请求,,回调,,callback_args,, callback_kwargs):   ,,,self._https_referer_replace_reverse(请求)   ,,,return 没有

感谢你能够认真阅读完这篇文章,希望小编分享的“django如何取消csrf限制”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

django如何取消csrf限制