Cross-Origin resource sharing und file://
Schreibe ich eine HTML5-Anwendung, die sammelt Daten aus verschiedenen Quellen mit JSONP. Alles, was ich Tue, mit GET funktioniert perfekt. Ich bin jetzt versucht, POST-Daten, und ich habe ein Interessantes Problem. Ich muss POST-Daten aus meiner Anwendung zu einer anderen, wo meine Anwendung ausgeführt wird, von einem lokalen Maschine. Ich bin versucht zu schreiben, ein cross-Plattform-fähig mobile-Anwendung (man denke Puls/Flipboard), so wird der code immer ausgeführt werden, von einer lokalen Quelle. Mein Gedankengang war wie folgt:
- Verwenden JSONP - JSONP nicht erlauben, für die Buchung, es funktioniert einfach nicht so (Post-Daten an JsonP)
- Verlassen sich auf die CORS - Da die Anfrage kommt von einer lokalen Quelle mit der
file://
die origin-header null ist. Dies bewirkt, dass die Anforderung fehl (XmlHttpRequest Fehler: Origin null ist nicht erlaubt, Access-Control-Allow-Origin) - Anderen server verwenden, um bounce-Anfrage aus - das würde teuer werden
Allen Browsern, die ich bin, Zielen auf webkit-basierte (iPad, Playbook, Android), so Frage ich mich, ob es irgendwelche Knarren in der same-origin-Richtlinie code, ich kann schleichen Sie durch? Vielleicht etwas mit iframe oder postMessage?
- "Dies bewirkt, dass die Anforderung fehl (XmlHttpRequest Fehler: Origin null ist nicht erlaubt, Access-Control-Allow-Origin)" - ist Es erlaubt, in den aktuellen Browsern, so dass die Frage veraltet ist.
- Könnten Sie näher auf die Dritte Kugel im detail? Ich denke, ich habe das gleiche problem wie du, aber ich verstehe nicht, wie Sie diese nutzen andere server.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es ausgehen würde, der einfachste Weg, dies zu tun ist, um post an die Ziel-url innerhalb eines iframe. Same-origin-policy in den meisten Browsern können Sie einen HTTP-POST aus einer Domäne zu einer anderen nicht verwandten Domäne. Ich löste das problem, indem ein iframe auf meiner Seite, zunächst auf einen lokalen bootstrapping-Seite. Da, die Seite war geladen, aus der gleichen Domäne, bin ich in der Lage, es zu kontrollieren, das über ein Skript. Ich verwendet, um zu posten das Formular, um mein Ziel-Website, und Befragten die Ergebnisse, um festzustellen, ob mein Aufruf erfolgreich war. Es ist nicht elegant, aber es funktioniert.
Diese Javascript-Bibliothek kann man sich fast sicher helfen:
http://easyxdm.net/