[django] Ajax による通信

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

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

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

<br />
function nextajax(data){<br />
    $.ajax({<br />
      type: 'POST',<br />
      dataType: &quot;json&quot;,<br />
      headers: {&quot;X-CSRFToken&quot;: getCookie(&quot;csrftoken&quot;)},<br />
      data:{'data': data},<br />
      url: &quot;/app/ajax/&quot;,<br />
      success: function (data) {<br />
        console.log(data);<br />
      }<br />
    });<br />
  }</p>
<p>//cookieのトークンを取得<br />
  function getCookie(c_name) {<br />
        if(document.cookie.length &gt; 0) {<br />
            c_start = document.cookie.indexOf(c_name + &quot;=&quot;);<br />
            if(c_start != -1) {<br />
                c_start = c_start + c_name.length + 1;<br />
                c_end = document.cookie.indexOf(&quot;;&quot;, c_start);<br />
                if(c_end == -1) c_end = document.cookie.length;<br />
                return unescape(document.cookie.substring(c_start,c_end));<br />
            }<br />
        }<br />
        return &quot;&quot;;<br />
   }<br />

参考: