Ich entwickle eine App auf meinem lokalen PC. Das Frontend sollte mit spinejs und das Backend-API mit node.js erstellt werden. Spine läuft auf Port 9294 und node.js läuft auf Port 3000. in Spine Ich habe folgendes mein Modell hinzugefügt:spine, node.js (express) und Access-Control-Allow-Origin
@url: "http:localhost:3000/posts"
und in meinem Express Server
app.get('/posts', function(req, res){
console.log("giving ALL the posts");
res.header("Access-Control-Allow-Origin", "*")
res.json(posts);
});
Aber ich bin immer die folgende erro in Chrom bekommen:
XMLHttpRequest cannot load http://localhost:3000/posts. Origin http://localhost:9294 is not allowed by Access-Control-Allow-Origin.
Was muss ich tun, dass ich richtig mein api zugreifen kann? Obwohl ich den Header in den Antworten hinzufüge, behebt das Problem.
Haben Sie die Antwort-Header überprüft, um zu bestätigen, dass der Header tatsächlich eingestellt wird? Außerdem verwendet jQuery den HTTP-Befehl "OPTIONS", um Pre-Auth zu erkennen. Stellen Sie sicher, dass express auch auf dieses HTTP-Verb reagiert. – tkone
Ehrlich gesagt, scheint meine Anfrage niemals meinen node.js-Server zu erreichen. Ich habe eine Debug-Anweisung in app.get() hinzugefügt, bevor irgendetwas an den Client gesendet wird. Wenn ich direkt über die URL auf meine API zugreife, kann ich die Aussage sehen, aber nicht beim Zugriff über den Backbone – soupdiver
Sie sollten etwas wie Charles verwenden, um sicherzustellen, dass dies geschieht. Wir machen eine Menge X-Domain-Sachen hier und es ist frustrierend, bis man sieht, dass der Header NICHT gesetzt ist. – tkone