這篇文章主要介紹了django如何取消csrf限制,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供福鼎企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、H5場景定制、小程序制作等業(yè)務(wù)。10年已為福鼎眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。# 導(dǎo)入包
from django.views.decorators.csrf import csrf_exempt
# 使用裝飾器即可避免csrf限制
@csrf_exempt def add_bookshelf(request): user_id = request.POST.get('user_id') print(user_id) return HttpResponse('123')
補(bǔ)充知識:Django 前后端分離跨域AJAX獲取csrftoken及獲取cookie時(shí)遇到的問題
獲取CSRFTOKEN
Django的中間件'django.middleware.csrf.CsrfViewMiddleware'會將csrftoken的值設(shè)置在cookie中。在前后端不分離的項(xiàng)目中,若需要在AJAX使用csrftoken的值則可在js腳本中通過document.cookie直接獲取cookie的值(也可以通過其他更快捷的輪子如js-cookie)。
在前后端分離的項(xiàng)目中(已配置django-cors-headers),無法直接使用js從cookie中獲取csrfToken的值(瀏覽器的同源策略),即使已經(jīng)成功設(shè)置了csrfToken的cookie值
解決方法
在中間件中引入
corsheaders.middleware.CorsPostCsrfMiddleware 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'corsheaders.middleware.CorsPostCsrfMiddleware',
有些博客中使用該中間件替代django.middleware.csrf.CsrfViewMiddleware是不可行的,因?yàn)樵撝虚g件并沒有期望中csrf校驗(yàn)的功能,下面為該中間件的源代碼。
class CorsPostCsrfMiddleware(MiddlewareMixin): def _https_referer_replace_reverse(self, request): """ Put the HTTP_REFERER back to its original value and delete the temporary storage """ if conf.CORS_REPLACE_HTTPS_REFERER and 'ORIGINAL_HTTP_REFERER' in request.META: http_referer = request.META['ORIGINAL_HTTP_REFERER'] request.META['HTTP_REFERER'] = http_referer del request.META['ORIGINAL_HTTP_REFERER'] def process_request(self, request): self._https_referer_replace_reverse(request) return None def process_view(self, request, callback, callback_args, callback_kwargs): self._https_referer_replace_reverse(request) return None
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“django如何取消csrf限制”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
當(dāng)前文章:django如何取消csrf限制-創(chuàng)新互聯(lián)
本文URL:http://www.rwnh.cn/article2/ccigoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、域名注冊、外貿(mào)建站、小程序開發(fā)、軟件開發(fā)、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容