中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

django如何取消csrf限制-創(chuàng)新互聯(lián)

這篇文章主要介紹了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值

django如何取消csrf限制

解決方法

在中間件中引入

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)

成都網(wǎng)頁設(shè)計(jì)公司
涟水县| 彭山县| 苗栗市| 英超| 巨野县| 工布江达县| 山西省| 阿拉尔市| 化德县| 新河县| 凤山县| 九台市| 衡阳市| 亚东县| 施秉县| 自贡市| 靖江市| 东平县| 内乡县| 普兰店市| 蕲春县| 彭山县| 武汉市| 孝感市| 静海县| 屏边| 胶南市| 年辖:市辖区| 阿坝| 沛县| 安康市| 萨迦县| 福海县| 河东区| 睢宁县| 濮阳县| 嘉祥县| 蒙阴县| 资阳市| 平顺县| 富平县|