Just a quick note about setting custom header in the HTTP request that Backbone.js manages.  This is super easy to do.  In the example code below, I have a Backbone.Collection assigned to messagesCollection variable and I'm triggering a fetch on that collection:
messagesCollection.fetch({
    headers: {
        'x-my-custom-header-1':'foobar', 
        'x-my-rest-api-version':'1.0'
    } 
});