ジャンゴ------ CSRF、Ajaxのノート

ビューは、CSRFチェックensure_csrf_cookieはクッキーがCSRFを生成していることを確認する必要がありますcsrf_protectビューcsrf_exempt django.views.decorators.csrf輸入csrf_exempt、csrf_protect、ensure_csrf_cookieから### 1.csrfデコレータは `` `CSRFチェックを必要としません`` `### 2.csrf 1.csrfミドルウェア機能が実行process一:2 csrftoken値of`値にクッキーから取得1.実行request.METAに入れcsrftoken 2.` GET「」HEAD「」OPTIONS「」TRACE「のCSRFをチェックしない場合は1:チェックサムを使用して2.の分析要求CSRF実行されませんcsrf_exemptデコレータかどうか1.クエリビュー機能process_view、 CSRFチェック2.他の方法要求(ポスト、置く):1.クッキーcsrftokenのcsrfmiddlewaretokenの値が得られた値を取得することができます取得 - 「request_csrf_token取得できません - 」リクエストヘッダX-csrftokenを取得値 - 「request_csrf_token request_csrf_tokenとクッキーcsrftoken、成功した受信要求の値を比較するには、要求が失敗した比較である拒否します。### 3.ajax 1. ####アドレスバーがアドレスモード1. GET 2.formフォームのGET / POST 3.Aラベル技術を入力要求するGET #### 2.ajax jsの要求と受信応答の使用です。特長: '/ CALC /'、種類: 'ポスト'、データ:1. 2.パーシャルリフレッシュ非同期データ伝送3. #### 3.jqery以下のAjaxリクエストが `` `$アヤックス({URLを発行しました{:$( "[NAME = 'I1']")のval()、B:.. $( "[NAME = 'I2']")のval()}、成功:関数(RES){$( "[NAME = 'I3']")のval(RES)}、エラー:.関数(誤差){にconsole.log(エラー)}}) `` `#### 4.アップロード:` `` HTML 。$( '#のB1')をクリックします(関数(){VARのformobj =新しいいるFormData(); formobj.append( 'ファイル'、のdocument.getElementById( 'F1')ファイル[0]);. // formobj.append ( 'ファイル'、$( '#のF1')[0] .files [0]); formobj.append( '名前'、 'アレックス'); $アヤックス({URL: '/アップロード/'、タイプ: 'ポスト'、データ:formobj、PROCESSDATA:偽、//のcontentType:偽、成功:機能(RES){$( "[名= 'I3']")のval(RES)。}、})}) `` `#### CSRFをチェックし5.ajax:前提条件:csrf_protect、django.views.decorators.csrfインポートcsrf_exemptからページ{%csrf_token%}で使用されるクッキープラスデコレータensure_csrf_cookieを確保csrftoken、ensure_csrf_cookie 1 $(「[名前は=」csrfmiddlewaretoken "] ')のval():. $(" [NAME = 'I1'] "):{ 'csrfmiddlewaretoken':` `` HTMLデータのデータ値csrfmiddlewaretokenに追加.val()、B:$( "[名= 'I2']")のval(),.}、 `` `2.追加要求header`` `HTMLヘッダ:{ 'X-csrftoken' :. $( '[NAME = "csrfmiddlewaretoken"]')のval()}、` `` 3.同じファイルモード2

おすすめ

転載: www.cnblogs.com/anthony-wang0228/p/11096990.html