保护prototype.js基于针对CSRF的XHR请求

Llo*_*eki 4 django ajax scriptaculous csrf prototypejs

Django已经更新到1.3,实际上从1.2.5开始,它已经扩展了该方案,以将Cross Site Request Forgery保护令牌传递给XMLHttpRequests.Django人员有助于为jQuery提供一个示例,以便将特定标头应用于每个XHR.

原型(以及Scriptaculous)必须遵守这个方案,但我找不到一种方法来告诉原型添加X-CSRFToken标头.最好的方法是在应用程序中应用它(如jQuery).

有没有办法做到这一点?

clo*_*eek 7

这是一个疯狂的猜测,但你可以尝试扩展基础AJAX类...

Ajax.Base.prototype.initialize = Ajax.Base.prototype.initialize.wrap(
    function (callOriginal, options) {
        var headers = options.requestHeaders || {};
        headers["X-CSRFToken"] = getCookie("csrftoken");
        options.requestHeaders = headers;
        return callOriginal(options);
    }
);
Run Code Online (Sandbox Code Playgroud)