[解決済み] CSRFに失敗しました。CSRFトークンがないか不正確です
2022-02-15 14:41:32
質問
Django 1.7 と django-rest-framework を使っています。
JSONデータを返すAPIを作成し、これを私の
settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),
'DEFAULT_RENDERER_CLASSES': (
# 'rest_framework.renderers.XMLRenderer',
'rest_framework.renderers.JSONRenderer',
# 'rest_framework.renderers.BrowsableAPIRenderer',
)
}
GETコールをすると、すべてのデータを返してくれますが、PUT/PATCHで試すと、次のようになります。
--------Response Headers---------
Status Code: 403
Date: Wed, 29 Oct 2014 18:51:42 GMT
Vary: Cookie
Server: WSGIServer/0.1 Python/2.7.8
Allow: GET, POST, PUT, PATCH, HEAD, OPTIONS
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
---------------------------------
--------Response Body-----------
{"detail": "CSRF Failed: CSRF token missing or incorrect."}
---------------------------------
これはログインしているときのみ発生し、匿名の場合は正しくPUT/PATCHすることができます。
で試してみました。
@csrf_exempt
というエラーが発生しました。
rest_framework.permissions.AllowAny
を設定する必要があるのですが...。
何がどうなっているのか、さっぱりわからない。何が問題なのか、どなたかご存知でしょうか?
解決方法を教えてください。
を使用している場合
セッション認証
の場合、通常 CSRF をチェックする必要がある Django の認証を使っていることになります。Django REST Framework は、このことを
SessionAuthentication
そのため、CSRF トークンを
X-CSRFToken
ヘッダを作成します。
は
Django ドキュメント
には、jQuery を使用して CSRF トークンを取得し、リクエストで送信する方法についての詳細情報が記載されています。CSRF トークンは
csrftoken
HTTPレスポンスから取得できるもので、使用する言語によって異なります。
CSRF クッキーが取得できない場合、これは通常
SessionAuthentication
. を調べることをお勧めします。
トークンオーセンティケーション
または
OAuth 2.0
を使用します。
関連
-
[解決済み] Django: OperationalError そのようなテーブルがない
-
[解決済み] Django Programmingのエラーカラムが、マイグレーションを実行しても存在しない。
-
[解決済み] 2つのフィールド「unique」をカップルとして定義する方法
-
djangoにおけるrelated_nameの役割
-
django queryset values&values_list
-
[解決済み] `SyntaxError: nonlocal 'topics_with_log_tag' のバインディングが見つからない` けど、バインディングはされている
-
[解決済み】Djangoのフォームセットにフォームを動的に追加する
-
[解決済み】Djangoで空のクエリセットがあるかどうか確認する
-
[解決済み】reverse()とは何ですか?)
-
[解決済み】Django MEDIA_URL と MEDIA_ROOT
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django Programmingのエラーカラムが、マイグレーションを実行しても存在しない。
-
[解決済み] Django ランサーバー使用時にデータを印刷する方法
-
django 1.8 公式ドキュメントの翻訳です。13-3 ログ
-
[解決済み] `SyntaxError: nonlocal 'topics_with_log_tag' のバインディングが見つからない` けど、バインディングはされている
-
[解決済み] http://127.0.0.1:8000/ には接続できるのに、http://192.168.1.6/ には接続できないのはなぜですか?
-
[解決済み] request.FILESからファイル名を取得するにはどうすればよいですか?
-
[解決済み] Facebookログインとメール認証
-
[解決済み】djangoのフォームフィールドでデフォルトで空のクエリセットを作成する
-
[解決済み】Django MEDIA_URL と MEDIA_ROOT
-
[解決済み] Django restフレームワーク、同じModelViewSetで異なるシリアライザーを使用する。