代表的な原因は次のとおりです。
| 原因 | 確認箇所 |
|---|---|
{% csrf_token %}がない | HTMLフォーム |
| Cookieが送られていない | ブラウザ開発者ツール |
X-CSRFTokenがない | Fetch・Axios |
| Originが不一致 | リクエストヘッダー |
CSRF_TRUSTED_ORIGINS不足 | settings.py |
| HTTPとHTTPSが混在 | Nginx、Cloudflare |
| Hostが正しく伝わらない | proxy_set_header Host |
| X-Forwarded-Protoが不正 | Nginx、Django |
Referrer-Policyがno-referrer | レスポンスヘッダー |
| CSRF CookieがSecureなのにHTTP接続 | URL、TLS |
| ログイン後に古いトークンを送信 | SPA、キャッシュ |
| フォームが外部Originを向いている | action属性 |
DjangoはHTTPSでOriginがない場合、厳格なReferer検証を行います。
サイト全体へ次の設定を付けると、安全でないメソッドのフォーム送信が失敗することがあります。
Referrer-Policy: no-referrer