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/