欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django如何設(shè)置csrf_token

 更新時間:2023年09月19日 09:11:26   作者:scott_zhb  
這篇文章主要介紹了django如何設(shè)置csrf_token問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、關(guān)于csrf_token

  • csrf:跨站請求偽造,防止其他人改造,盜取信息,反正就是一種網(wǎng)站的防護措施
  • 服務(wù)器端:設(shè)置隨機的csrf_token,get請求的時候就該設(shè)置好
  • 客戶端:攜帶上相應(yīng)的csrf_token,post請求的時候攜帶上

二、form表單設(shè)置csrf_token

通過模板標簽進行設(shè)置

在這里插入圖片描述

當提交post請求的時候會自動帶上

三、針對某個類視圖設(shè)置csrf_token

from django.views.decorators.csrf import ensure_csrf_cookie
from django.utils.decorators import method_decorator
from django.views import View
class LoginView(View):
    @method_decorator(ensure_csrf_cookie)
    def get(self, request):
        pass
    def post(self, request):
        pass

針對整個項目中所有視圖設(shè)置csrf_token

①自定義中間件,在utils目錄下創(chuàng)建CsrfMiddleware.py,如下圖所示:

在這里插入圖片描述

②注冊中間件,在項目目錄下的settings.py中,如圖所示寫上全路徑

在這里插入圖片描述

四、提交post請求攜帶csrf_token

前面說到,form表單是自動攜帶上的,那么ajax請求是如何攜帶csrf_token的呢?

很簡單,通過jquery獲取,在ajax請求之后附加如下js代碼:

// get cookie using jQuery
  function getCookie(name) {
    let cookieValue = null;
    if (document.cookie && document.cookie !== '') {
      let cookies = document.cookie.split(';');
      for (let i = 0; i < cookies.length; i++) {
        let cookie = jQuery.trim(cookies[i]);
        // Does this cookie string begin with the name we want?
        if (cookie.substring(0, name.length + 1) === (name + '=')) {
          cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
          break;
        }
      }
    }
    return cookieValue;
  }
  function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
  }
  // Setting the token on the AJAX request
  $.ajaxSetup({
    beforeSend: function (xhr, settings) {
      if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
      }
    }
  });

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pip install 安裝路徑修改的方法步驟

    pip install 安裝路徑修改的方法步驟

    本文主要介紹了pip install 安裝路徑修改的方法步驟,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • 使用Python自動備份重要文件

    使用Python自動備份重要文件

    在數(shù)字化時代,數(shù)據(jù)是非常寶貴的資源,從個人照片和文檔到重要的工作文件,我們的數(shù)字資產(chǎn)對我們來說越來越重要,下面我們就來看看如何使用Python實現(xiàn)自動備份重要文件吧
    2024-11-11
  • python的dataframe轉(zhuǎn)換為多維矩陣的方法

    python的dataframe轉(zhuǎn)換為多維矩陣的方法

    下面小編就為大家分享一篇python的dataframe轉(zhuǎn)換為多維矩陣的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 淺談django channels 路由誤導

    淺談django channels 路由誤導

    這篇文章主要介紹了淺談django channels 路由誤導,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • python對list中的每個元素進行某種操作的方法

    python對list中的每個元素進行某種操作的方法

    今天小編就為大家分享一篇python對list中的每個元素進行某種操作的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python獲取文件擴展名的方法

    python獲取文件擴展名的方法

    這篇文章主要介紹了python獲取文件擴展名的方法,涉及Python針對文件路徑的相關(guān)操作技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • 如何用python 實現(xiàn)老板鍵功能

    如何用python 實現(xiàn)老板鍵功能

    這篇文章主要介紹了python 開發(fā)老板鍵功能的方法,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • 使用Python實現(xiàn)在Word文檔中進行郵件合并

    使用Python實現(xiàn)在Word文檔中進行郵件合并

    郵件合并是現(xiàn)代辦公中一項顯著提升效率的技術(shù),它巧妙地將大量個體數(shù)據(jù)與預(yù)設(shè)的文檔模板相結(jié)合,實現(xiàn)了一次性批量生成定制化文檔,下面我們就來看看如何使用Python實現(xiàn)在Word文檔中進行郵件合并吧
    2024-04-04
  • Python中Timedelta轉(zhuǎn)換為Int或Float方式

    Python中Timedelta轉(zhuǎn)換為Int或Float方式

    這篇文章主要介紹了Python中Timedelta轉(zhuǎn)換為Int或Float方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 使用Python腳本和ADB命令實現(xiàn)卸載App

    使用Python腳本和ADB命令實現(xiàn)卸載App

    這篇文章主要介紹了使用Python腳本和ADB命令實現(xiàn)卸載App的實現(xiàn)方法,文中給出了完整的示例代碼,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。
    2017-02-02

最新評論