1

Django はそれを必要とするため、サーバーへの ajax 投稿には CSRF 保護が必要です。ただし、CSRF では Cookie を有効にする必要があります。そうしないと、django がリクエストを 404 します。誰も Cookie を有効にしていないと仮定すると、どのように ajax 投稿を処理すればよいですか? セキュリティの問題で @exempt_csrf デコレーターを使用したくありません。

(私がやっていることにcsrf保護が必要かどうかはわかりません。ajaxリクエストは、このWebサイトのように投稿に賛成票と反対票を投じるためのものです)

君たちありがとう!

4

3 に答える 3

1

Django に組み込まれている CSRF 保護は、Cookie がないと機能しません。 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-it-works

必要であると判断した場合は、これらのビューに対して独自の CSRF 保護を適用する必要があります。または、https://github.com/mozilla/django-session-csrfのようなものを使用します(Abid A の回答によると、セッション フレームワークには Cookie が必要なので、これは役に立ちません)。

于 2012-09-10T17:38:58.330 に答える
0

@Tomaszが書いたように、小さな変更を加えて書きます。

$.ajax({
    url: '/myurl',
    type: 'POST',
    data: {
        csrfmiddlewaretoken: $('input[name="csrf_token"]').val(),
        mydata: 'myparam'
    }
});

jqueryを使用している場合。

于 2012-09-10T17:30:42.853 に答える
0

Django の CSRF 保護が機能するには Cookie が必要です。

ここで詳細を取得できます: https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/#how-it-works

Django のセッション フレームワーク全体も Cookie ベースであるため、多くのユーザーが Cookie を無効にすると、認証などの問題が発生することに注意してください。

于 2012-09-10T17:45:55.353 に答える