"CSRFトークンがないか不正確です "の解決策。
現象
禁制 (403)
CSRF 検証に失敗しました。
ヘルプ
失敗の理由を教えてください。
CSRFトークンがないか、不正確です。
一般に、これは本物の Cross Site Request Forgery がある場合や、 Django の CSRF 機構が正しく使われていない場合に発生します。 POST フォームでは、以下のことを確認する必要があります。
ブラウザがCookieを受け入れている。
ビュー関数では、テンプレートにContextではなくRequestContextを使用しています。
テンプレートでは、各POSTフォームの内部に内部URLを対象とした{% csrf_token %}テンプレートタグが存在します。
CsrfViewMiddleware を使用していない場合は、csrf_token テンプレートタグを使用するビュー、および POST データを受け付けるビューで csrf_protect を使用する必要があります。
このページのヘルプセクションが表示されているのは、Django の設定ファイルで DEBUG = True になっているからです。 のメッセージが表示されます。
CSRF_FAILURE_VIEWの設定を使って、このページをカスタマイズすることができます。
解決の手順
1〉djangoプロジェクト settings.py
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware,
'django.middleware.csrf.CsrfViewMiddleware',# confirm the existence of
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware,
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
2〉htmlでフォームに追加されたテンプレートタグ {%% csrf_token %} です。
<form action=". " method="post">{% csrf_token %}
3〉djangoプロジェクト views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
ご質問はこちらへ クロスサイトリクエストフォージェリ対策
P.S ブロックしたい場合 CSRF方法1:djangoプロジェクトのsettings.pyをコメントアウトする
#'django.middleware.csrf.CsrfViewMiddleware'
方法2. django project views.py でマスキングデコレーターを追加します。
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def some_view(request):
#...
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例