Forgery)と呼びます。Djangoではこの攻撃を防ぐため、POSTリクエストにはCookieに含まれるcsrftokenの情報が含まれていなければいけない(無い場合にはリクエストを拒否する)仕様になっています。csrftokenは元々はサーバから受け取る乱数の情報であり、この情報を持っているということは、少なくとも正規の方法でページにアクセスした状態でリスクエストを送っている、ということになり、リスクを低減できると言うわけです。慣れないうちはこのcsrftokenをcookieから取得する方法や、メッセージに含める方法が分からないため、POSTメッセージを通すために延々と時間を要する、という事態になりがちです(私がそうでした)。POSTをする方法もいろいろあり(Htmlのsubmitの場合や、JavaScriptの場合、Ajaxの場合、Pythonの場合、等々)、それらの方法もまちまちなので、この記事で整理しました。%}”というコードを追加しておけば、それだけで自動的にcsfrtokenが送られます。%}JavaScriptでcreateElementを使う場合この方法の場合、createElementで作ったformの中にcsrftokenを含ませる必要があります。csrftokenは以下のような関数を作って取得できるようにしましょう。cookieValue;}具体的には以下のようにすれば取得できます。getCookie('csrftoken');次にcreatElemntでformを作り、TEXTのINPUTとしてNAMEが”csrfmiddlewaretoken”、VALUEがcsrftokenのElementを加え、formをSubmitすればOKです。投げたいURLを書く。POSTリクエストもしくはGETリクエストを書く。form.submit();}Ajaxを使う場合Ajaxを使う場合は初期設定のような形でcsrftokenを与えるようにしておけばいいようです。}});あとは普通にAjaxを使う手順でPOSTメッセージを作成すればOKです。});}Pythonのrequestsを使う場合ブラウザを起動せずにPOSTメッセージを送りたい場合には、例えばPythonのrequestsモジュールを使う方法があります。headers=dict(Referer=URL))まとめcsrftokenをcookieから取得して、POSTリクエストを通す方法を整理しました。分かってしまえば簡単・かつ使い回しが効くのですが、初めてだと数時間オーダで悩むネタだと思いますので、是非活用してみてください。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。プロフィール兵庫県在住の30代データサイエンティスト。Pythonを使った機械学習等によるデータ分析や、ウェブアプリ等のシステム開発に取り組んでいます。