[django] Ajax による通信

DjangoでWebアプリケーションを開発する際、一般に、入力フォームなどを発行する際、
一般にウェブアプリケーションフレームワーク自体がCookieにトークンをもたせ、そのトークン値の一致を確認することでCSRFなどへの対策が行われています。もし、これらのトークンが欠落したフォームがWebサーバー側に送られると以下のようなエラーが吐かれます。

そこで、今回はある特定の条件で実装するときに、Ajaxによる通信で、
ブラウザからWebサーバー側にリクエストを送る際に、Cookieのトークンをマニュアル的に付加してあげるということを行い、
Ajax通信をやってみました。

実装としては、簡単でAjaxによるリクエストをPOSTする際、headers情報の中に”X-CSRFToken”として
トークンを付加してあげます。このとき、トークンはgetCookieにより取得することができます。

function nextajax(data){
    $.ajax({
      type: 'POST',
      dataType: "json",
      headers: {"X-CSRFToken": getCookie("csrftoken")},
      data:{'data': data},
      url: "/app/ajax/",
      success: function (data) {
        console.log(data);
      }
    });
  }

//cookieのトークンを取得
  function getCookie(c_name) {
        if(document.cookie.length > 0) {
            c_start = document.cookie.indexOf(c_name + "=");
            if(c_start != -1) {
                c_start = c_start + c_name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if(c_end == -1) c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start,c_end));
            }
        }
        return "";
   }

参考: