CodeIgniter CSRF Protection With Ajax
A common issue I have seen lately is people using the new CSRF protection inside CodeIgniter 2.0. This is a great new feature but it affects all post data no matter if it comes from a form or from an ajax call. The ajax part is what seems to be tripping people up. So I decided to write a short overview on how to accomplish sending jQuery ajax posts with CSRF enabled.
In this tutorial I will be using the jQuery cookie plugin for simplicity.
Here is the whole javascript to handle the ajax:
$("#selector").click(function () {
e.preventDefault();
var form_data = {
cat_name: $('#something').val(),
csrf_token_name: $.cookie("csrf_cookie_name")
};
$.ajax({
type: "POST",
url: SITE_URL + "controller",
data: form_data,
success: function(data) {
alert('it worked');
}
});
});
As you can see the only thing I had to add was the following line:
csrf_token_name: $.cookie("csrf_cookie_name")
Hopefully this will help some of you folks out.