Backbone utilizza jQuery/Zepto per le richieste AJAX, quindi è possibile utilizzare le funzionalità disponibili in tali librerie.
Per aggiungere intestazioni personalizzate a tutte le chiamate XHR effettuate da jQuery, è possibile utilizzare jQuery.ajaxSend event, che viene attivato prima di ogni richiesta Ajax e modificare il jqXHR che riceve come argomento.
Modifica sulla base di commenti di OP:
Probabilmente il modo più semplice per modificare i dati inviati è quello di ignorare la funzione Backbone.sync. Si potrebbe avvolgere l'implementazione nativa, e aggiungere la proprietà richiesta c'è:
var nativeSync = Backbone.sync;
Backbone.sync = function (method, model, options) {
//for POST/PUT requests, add access token to the request
if(model && (method === 'create' || method === 'update')) {
var data = _.extend(model.toJSON(), {
access_token: 'token'
});
options.data = JSON.stringify(data);
}
//call the native Backbone.sync implementation
nativeSync(method, model, options);
};
Ciao fencliff. Cosa succede se voglio che access_token si trovi nel carico utile dei dati e non nelle intestazioni, come posso ottenerlo? Do I $ .ajaxSend (function (e, jqxhr, settings) {settings.data.access_token = 'mytoken'}) vero? – Mikko
Anche questo può essere fatto - ma sei sicuro di voler aggiungere il token di accesso anche alle richieste GET e DELETE? Non è tipico fornire un corpo di richiesta usando quei verbi, e la maggior parte dei server web ignorano comunque il corpo. – jevakallio
Attualmente sto usando il server REST https://github.com/philsturgeon/codeigniter-resterserver e, mentre ho controllato il codice sorgente, fanno affidamento sul corpo della richiesta. – Mikko