保护基于prototype.js的XHR请求免受CSRF攻击

2024-05-27

Django 已经更新到 1.3,事实上从 1.2.5 开始,它就扩展了该方案,将跨站请求伪造保护令牌传递给 XMLHttpRequests。 Django 人员提供了帮助jQuery 的一个例子 http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax将特定标头应用于每个 XHR。

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

有没有办法做到这一点?


这是一个疯狂的猜测,但你可以尝试延伸 http://api.prototypejs.org/language/Function/prototype/wrap/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);
    }
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保护基于prototype.js的XHR请求免受CSRF攻击 的相关文章

随机推荐