/ / csrfトークンdajaxice - ajax、django、csrf

csrfトークンdajaxice - ajax、django、csrf

私は試してみる この例。私がdajax関数にアクセスしようとすると、「no csrfまたはsession cookie」というエラーが出ます。どうすればjavascriptにcsrfトークンを追加できますか?私はテンプレートにcsrfトークンを追加しようとしましたが、うまくいきませんでした。

回答:

回答№1は1

から django doc

  1. ミドルウェア "django.middleware.csrf"を追加します。CsrfViewMiddleware "をミドルウェアクラスMIDDLEWARE_CLASSESのリストに追加します(CsrfResponseMiddlewareが使用されている場合、CSRF攻撃が処理されていると見なすビューミドルウェアの前に来る必要があります)。 あるいは、保護したい特定のビューに対して、デコレータdjango.views.decorators.csrf.csrf_protectを使用することもできます(下記参照)。

  2. POSTフォームを使用するテンプレートでは、フォームが内部URLの場合は、要素内でcsrf_tokenタグを使用します。

    {%csrf_token%}

これは外部URLを対象とするPOSTフォームでは実行しないでください。CSRFトークンが漏洩して脆弱性が発生するためです。

  1. 対応するビュー関数で、 "django.core.context_processors.csrf"コンテキストプロセッサが使用されていることを確認します。通常、これは次の2つの方法のいずれかで実行できます。

    3.1「django」を常に使用するRequestContextを使用します。core.context_processors.csrf "(TEMPLATE_CONTEXT_PROCESSORSの設定に関係なく)。一般的なビューやcontribアプリケーションを使用している場合は、これらのアプリケーションでRequestContextを一貫して使用しているため、すでにカバーされています。

    3.2プロセッサを手動でインポートして使用し、CSRFトークンを生成してテンプレートコンテキストに追加します。


回答№2については2

1) "django.middleware.csrf.CsrfViewMiddleware"をsettings.pyのミドルウェアクラスに追加します

2)テンプレート内のタグの後に、{%csrf_token%}

基本的にはそれです

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax ここでは、javascriptとajax csrfトークンについて調べることができます


回答№3の場合は1

たぶんこれが役立ちます: DjangoのAJAX経由でパラメータをポストしている間に "CSRFトークンが見つからないか間違っています"