タイトル: Forbidden (403) CSRF verification failed. Request aborted.
SEOタイトル: Forbidden (403) CSRF verification failed. Request aborted.
この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<thead>
<tr><th style="background-color:#f39c12;color:#ffffff;text-align:left">この記事の要点</th></tr>
</thead>
<tbody>
<tr>
<td style="background-color:#fef9e7">
<ul>
<li>Django の <code>Forbidden (403) CSRF verification failed</code></li>
<li>原因: <strong>テンプレート側の form に <code>{% csrf_token %}</code> が無い</strong></li>
<li>対処: <code><form method="post"> {% csrf_token %} ...</code> を必ず記述</li>
<li>Ajax の場合は <code>X-CSRFToken</code> ヘッダで送信</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p> </p>
<h2>エラー内容</h2>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff">Forbidden (403)</span></p>
<p><span style="color:#ffffff">CSRF verification failed. Request aborted.</span></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<h2>発生条件/原因/対処法</h2>
<p>formでPOST通信した際に発生するエラー。</p>
<p>テンプレート側のformタグ内に csrf_token を設定していないことが原因。</p>
<table border="1" cellpadding="1" cellspacing="1" style="width:500px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff"><form ...></span></p>
<p><span style="color:#f1c40f"> {% csrf_token %}</span></p>
<p><span style="color:#ffffff"></form></span></p>
</td>
</tr>
</tbody>
</table>