2011-06-28 23 views
0

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

答えて

1

を見つけることができます。

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

  2. 、フォームは、内部URLのためのものである場合は要素内csrf_tokenタグを使用することは:

    {%csrf_token%}これはあってはならない

外部URLを対象とするPOSTフォームでは、CSRFトークンが漏洩して脆弱性が発生するため、この処理が行われます。

  1. 対応するビュー機能では、 'django.core.context_processors.csrf'コンテキストプロセッサが使用されていることを確認してください。

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

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

2

1)テンプレートのタグの後)settings.py

2であなたMIDDLEWARE_CLASSESに 'django.middleware.csrf.CsrfViewMiddleware' を追加、{%csrf_token%}を使用

基本的に、それはそれですここ

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajaxあなたはdjango docからJavaScriptとAjaxのCSRFトークンについて