Late one night, I was attempting to wire up a delete button on a Rails app using XHR.  However, every time I attempted to make the XHR call, I saw AccessDenied in the server log and my session was un authenticated. Since it was late, I remapped it to a different URL and moved on.
However, the fact that this did not work still bothered me and when I revisited it after a good night's sleep, the answer was quite obvious. My Ajax setup (copied from many Rails projects ago) looked like:
$("body").bind("ajaxSend", function(elm, xhr, s){
    if (s.type == "POST") {
        xhr.setRequestHeader('X-CSRF-Token', Common.CSRF_TOKEN);
    }
});I was only setting the X-CSRF-Token on a POST. Therefore, when the server received the DELETE verb, it killed the session, thinking that something was afoul.
Changing that line to:
$("body").bind("ajaxSend", function(elm, xhr, s){
    if (s.type == "POST" || type == "DELETE" || type == "PUT") {
        xhr.setRequestHeader('X-CSRF-Token', Common.CSRF_TOKEN);
    }
});fixed the issue in the correct way.
