【发布时间】:2012-06-12 15:59:27
【问题描述】:
我正在尝试使用 Backbone.js 模型保存到我的 Yii Web 应用程序,但即使模型是序列化表单并且我使用 Backbone.sync 设置,我也会收到“无法验证 CSRF 令牌”响应一个标题。
模型(表单中包含 CSRF 令牌并将其作为“YII_CSRF_TOKEN”属性发送):
var v = new ModelName ($('.formclass').serializeJSON());
JSON 序列化器:
//form.serializeJSON
(function( $ ){
$.fn.serializeJSON=function() {
var json = {};
jQuery.map($(this).serializeArray(), function(n, i){
json[n['name']] = n['value'];
});
return json;
};
})( jQuery );
backbone.sync:
Backbone.old_sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
var new_options = _.extend({
beforeSend: function(xhr) {
console.log('backbone sync');
var token = model.get('X_CSRF_TOKEN');
console.log('token ='+token)
if (token) xhr.setRequestHeader('YII_CSRF_TOKEN', token);
}
}, options)
Backbone.old_sync(method, model, new_options);
};
我也尝试过将标头设置为“X_CSRF_TOKEN”,但无济于事。
【问题讨论】:
-
非 xhr POST 请求是否可以正常工作?
标签: post backbone.js yii xmlhttprequest csrf