Ich schreibe eine HTML5-Anwendung, die mit JSONP Daten aus verschiedenen Quellen sammelt. Alles, was ich mit einem GET mache, funktioniert perfekt. Ich versuche jetzt, Daten zu POST zu bringen, und ich habe einen interessanten Haken gefunden. Ich muss Daten von meiner Anwendung zu einem anderen senden, wo meine Anwendung von einem lokalen Computer ausgeführt wird. Ich versuche eine plattformübergreifende mobile Anwendung zu schreiben (denke Pulse / Flipboard), also wird der Code immer von einer lokalen Quelle laufen. Mein Denkprozess war wie folgt:
file://
kommt, ist der Ursprungsheader null. Dies führt dazu, dass die Anforderung fehlschlägt ( XmlHttpRequest Fehler: Null-Null ist nicht zulässig von Access-Control-Allow-Origin ) Alle Browser, auf die ich abziele, sind webkitbasiert (iPad, Playbook, Android), also frage ich mich, ob es in demselben Quellrichtliniencode ein Knacken gibt, durch das ich mich schleichen kann? Vielleicht etwas mit iframe oder postMessage?
Wie sich herausstellen sollte, besteht der einfachste Weg darin, auf die Ziel-URL innerhalb eines Iframes zu schreiben. In den meisten Browsern können Sie mit der gleichen Herkunftsrichtlinie einen HTTP-POST von einer Domäne zu einer anderen nicht verwandten Domäne ausführen. Ich löste das Problem, indem ich meiner Seite einen iframe hinzufügte, der anfänglich auf eine lokale bootstrapping Seite gesetzt wurde. Da diese Seite von derselben Domain geladen wurde, kann ich sie per Skript steuern. Ich habe das verwendet, um das Formular an meine Zielseite zu senden, und die Ergebnisse abgefragt, um festzustellen, ob mein Anruf erfolgreich war. Es ist nicht elegant, aber es funktioniert.
Diese Javascript-Bibliothek kann Ihnen fast sicher helfen:
easyXDM ist eine Javascript-Bibliothek, die ermöglicht es Ihnen als Entwickler einfach um die eingeführte Beschränkung herum arbeiten durch die gleiche Herkunft Policy, in machen es leicht zu kommunizieren und Expose JavaScript-APIs über Domain Grenzen.
..
Im Kern stellt easyXDM ein Transportstapel kann passieren String-basierte Nachrichten zwischen zwei Fenster, ein Verbraucher (der Haupt Dokument) und einen Anbieter (ein Dokument inklusive eines iframe). Es tut dies mit einem von mehreren verfügbaren Techniken, immer die meisten auswählen effizient für den aktuellen Browser. Für alle Implementierungen der Transport Stapel bietet Bidirektionalität, Zuverlässigkeit, Warteschlangen und Absender-Überprüfung.
Tags und Links javascript ajax html5 json jsonp