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」として設定しようとしましたが、役に立ちませんでした。