Ho giocato con Backbone nella mia console di Chrome e mi sono imbattuto in un problema interdominio che non riesco a capire.Backbone.js non effettuerà richieste cross-host?
Il padrone di casa che sto connessione a implementa presumibilmente correttamente CORS perché una richiesta XHR grezzo restituisce il JSON atteso:
var http = new XMLHttpRequest();
http.open('GET', 'http://example.com:3000/entities/item/15.json', true);
http.onreadystatechange = function(evt) { console.log(evt); }
http.send();
(tronchi 3 eventi progress XHR sulla console con i dati corretti nella risposta)
ma quando lo faccio la seguente con Backbone il suo navigatore web non piace:
var Item = Backbone.Model.extend({});
var ItemsCollection = Backbone.Collection.extend({
model: Item,
url: 'http://example.com:3000/entities/item/'
});
var items = new ItemsCollection();
items.fetch();
(restituisce XMLHttpRequest cannot load http://example.com:3000/entities/item/. Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.
)
C'è qualcosa che devo fare per dire a Backbone di lavorare con CORS? Sembra che questo errore si sia verificato prima che il browser effettuasse una richiesta, quindi non penso che sia un errore di configurazione del server.
È possibile disattivare stessa politica di origine in Chrome, [qui] (http: // StackOverflow. it/a/3177718/1344509) ha spiegato come disabilitarlo su Chrome. – Ikrom
Grazie per il suggerimento, ma non voglio disabilitarlo (è progettato per funzionare su normali browser Web). – magneticMonster
Quindi forse [questo] (http://stackoverflow.com/a/6487765/1344509) aiuta. – Ikrom