1.はじめに
我々は、バックエンドにするとき、フロントエンドからのデータを送信する前に、これをコメントアウトしcsrftokenにミドルウェアの設定されている実際には、データの保護効果上の悪意のある攻撃を避けるために、大きなを果たしました。しかし、これは選択の直接のコメント知的タイプではありません、ここでは、この問題を解決するための方法をいくつか紹介します。
原則CSRF:ポスト要求を送信する際にランダムな文字列の貯水池、最初のGET要求、ユーザーのブラウザに送信し、ブラウザが自動的に文字列を識別することが運びます
2.モード1
追加{%csrf_token%}フロントエンドでは、データのフロントエンドから送信されたデータは、次の追加のAjax。
csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val()
3.第二の方法
X-CSRFTokenは、AJAXリクエストヘッダに加え、値はクッキーcsrftokenからフェッチされなければなりません
$('#login').click(function () {
$.ajax(
{
url:{% url 'login' %},
type: 'post',
headers:{ "X-CSRFToken":$.cookie('csrftoken') },
data: {
user: $('[name="user"]').val(),
pwd: $('[name="pwd"]').val()
},
success: function (data) {
data = JSON.parse(data);
if (data.status) {
window.location = data.url
}
else {
alert('登陆错误')
}
}
}
)
})
4. 3つの方法
.ajaxSetup $()を使用して、グローバルなデフォルトパラメータのAJAXを追加します
$.ajaxSetup({
headers: {"X-CSRFToken": $.cookie('csrftoken')},
});
PS:私は誰も答えを問題に遭遇していませんか?Pythonの学習教材が必要?あなた自身を追加することができます下のリンクをクリックしてGET
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
5. 4つの方法
デコレータ添加ensure_csrf_cookieにクッキーを設定する必要の観点から()
from django.views.decorators.csrf import ensure_csrf_cookie
@ensure_csrf_cookie
def server(request):
return render(request, 'server.html')