Защита XHR-запросов на основе prototype.js от CSRF - PullRequest
4 голосов
/ 05 апреля 2011

Django был обновлён до версии 1.3, и фактически начиная с 1.2.5 он расширил схему для передачи токена защиты от подделки межсайтовых запросов в XMLHttpRequests.Люди из Django охотно предоставляют пример для jQuery , чтобы применить определенный заголовок к каждому XHR.

Прототип (и, следовательно, Scriptaculous) должен соответствовать этой схеме, но я не могу найтиспособ сказать прототипу добавить заголовок X-CSRFToken.Лучше всего сделать это один раз так, чтобы применить его ко всему приложению (например, для jQuery).

Есть ли способ сделать это?

1 Ответ

7 голосов
/ 06 апреля 2011

Это дикое предположение, но вы можете попробовать расширение базовый класс 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);
    }
);
...