ho un'API ospitato su un dominio che ha CORS attivato con le seguenti intestazioni:Croce XHR dominio fallendo
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Max-Age: 1728000
Sono in grado di fare una richiesta GET o POST da hackst.com e funziona benissimo. Collegamento: http://hackst.com/#w3SbV
Dalla mia app backbone ospitata su un altro dominio, le richieste GET funzionano correttamente. Ma quando cerco di creare e salvare un nuovo modello (vale a dire fare una richiesta POST), viene a mancare con il seguente errore:
Failed to load resource: the server responded with a status of 501 (Not Implemented) http://projectwhatup.us:5000/api/posts
XMLHttpRequest cannot load http://projectwhatup.us:5000/api/posts. Origin http://ayush.projectwhatup.us is not allowed by Access-Control-Allow-Origin.
Il mio codice dorsale rilevanti:
var newPostData = {
topic : "New Post",
body : "new body",
user_id : 1,
};
var newPostModel = new Post(newPostData);
this.model.create(newPostModel);
Ho anche provato sovra- in sella il metodo create
e fare una richiesta POST manualmente in questo modo:
create : function(data) {
console.log('overriden create');
$.ajax({
"url" : this.url,
"async" : true,
"beforeSend" : function(obj){
console.log(obj);
},
"contentType" : 'application/json',
//"crossDomain" : true, // uncommenting this doesnt help either
"headers" : {
},
"dataType" : 'json',
"type" : 'POST',
"data" : JSON.stringify(data),
"error" : function(err){
console.log('new post creation failed');
console.log(err);
},
"success" : function(resp){
console.log('new post created');
console.log(resp);
}
});
}
stesso errore.
Ho provato una richiesta GET indipendente anche su JSFiddle (http://jsfiddle.net/X9cqh/5/), ma questo non funziona anche se la mia app backbone può rendere la richiesta GET valida.
Sono completamente all'oscuro a questo punto. Qualche suggerimento, puntatori, soluzioni?
guardando [hurl.it] (http://hurl.it/hurls/1330531e4f6c2b80fe278890b412cb50c3e4857c/432866d6c733527ea02f6436de63cbfac1a9ccc5) richiesta HEAD al server, sembra CORS è abilitata solo per 'http: // ayush.projectwhatup.us' – teddybeard
Come mai la richiesta da parte di hackst.com è stata superata? – xbonez
È perché la richiesta non viene eseguita dal tuo browser web. Simile a Hurl.it, quando crei un hackst.com richiesta, viene eseguita dal loro server sul back-end e quindi visualizza i risultati nel browser web. – teddybeard