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

时间:2011-04-05 12:37:25

标签: ajax django prototypejs scriptaculous csrf

Django已经更新到1.3,实际上从1.2.5开始,它已经扩展了该方案,将一个跨站点请求伪造保护令牌传递给XMLHttpRequests。 Django人员有助于an example for jQuery为每个XHR应用特定的标题。

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

有办法吗?

1 个答案:

答案 0 :(得分:7)

这是一个疯狂的猜测,但您可以尝试extending基础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);
    }
);