ajax - 保护基于prototype.js的XHR请求免受CSRF

标签 ajax django prototypejs scriptaculous csrf

Django 已经更新到 1.3,实际上从 1.2.5 开始,它已经扩展了将跨站点请求伪造保护 token 传递给 XMLHttpRequests 的方案。 Django 的人提供了 an example for jQuery将特定 header 应用于每个 XHR。

原型(prototype)(因此 Scriptaculous)必须遵守这个方案,但我找不到告诉原型(prototype)添加 X-CSRFToken header 的方法。最好的办法是以在整个应用程序中应用它的方式执行一次(如 jQuery)。

有没有办法做到这一点?

最佳答案

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

关于ajax - 保护基于prototype.js的XHR请求免受CSRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5551914/

相关文章:

button - 原型(prototype)按钮 onClick

javascript - Rails : Not ember, 不是 JS 响应,而是介于两者之间的东西

javascript - 从 WFS/Geoserver 获取 JSON 数据

mysql - 多个进程访问 Django 数据库后端;直到手动调用 _commit 才显示记录

python - 如何从脆皮形式的 View 中更改提交按钮文本?

javascript - 维护一组独特的函数

c# - 一个按钮上有两个带有条件的弹出窗口

jquery - 使用 Ajax 和 jQuery 的 Django 表单!无法弄清楚如何在 URL 中将控制从 Ajax 传递到 Python

django - 在 Django 中强制使用小写用户名

javascript - 创建闭包和 some_func.bind(this) 之间的性能差异