Same Origin Policy (SOP) umgehen
T-Rex
- javascript
Hoi,
Vorhaben: User klicken auf ein Bild. Per onclick javascript wird ein ajax zu einem anderen Server aufgebaut wo dieser Click in einer Logdatei registriert wird. Wir wollen eine kleine Statistik aufbauen, wo wer hin clickt. Das ganze MUSS über 2 Domains laufen. Sprich auf der Domain http://www.a.de liegt die HTML Seite. Auf http://www.b.de liegt das php was mittels ajax angesteuert werden soll um den Klick mit zu loggen.
Problem: Hab schon ein wenig rumgesucht nach meinem Javascript Fehler (uncaught exception: Access to restricted URI denied (NS_ERROR_DOM_BAD_URI)), welcher in meiner localen Testumgebung nicht auftritt. Ich bin überzeugt davon, dass das Problem http://de.wikipedia.org/wiki/Same_Origin_Policy dieses SOP zeugs ist. Das SOP ding ist eigentlich ziemlich Klasse bezüglich fremder Angriffe etc... aber mich stört es doch sehr.
Kann man das eventuell umgehen?
Danke
T-Rex
Kann man das eventuell umgehen?
Mittels einem Proxy auf der Quelldomain.
1-Zeichen-Second-Level-Domains sind unter .de. übrigens nicht vorgesehen - zudem solltest du dich bitte mit RFC 2606, im besonderen mit Abschnitt 3 "Reserved Example Second Level Domain Names", beschäftigen.
Yerf!
Kann man das eventuell umgehen?
Wenn es nur ein GET-Request sein soll und im Browser keine Antwort ausgewertet werden muss, dann kann man auch per JS ein Image-Objekt mit entsprechender URI erzeugen.
Gruß,
Harlequin
Hallo,
das kannst du mit verschiedenen Techniken machen - nur nicht XMLHttpRequest (ohne Cross-Domain-Erweiterungen).
Bis auf die iframe-Methode kannst du da immer GET-Daten in der URI mitschicken, was eigentlich reichen sollte. Den Query String kannst du mit JavaScript zusammensetzen.
Mit dem iframe könntest du zur Not auch POST-Daten über ein unsichtbares Formular versenden, aber wozu der Aufwand.
Kann man das eventuell umgehen?
Muss und sollte man gar nicht, so Sachen wie Statistiken funktionieren wunderbar mit Same-Origin-Policy. Same-Origin-Policy heißt, dass die Scripte einer Domain Ressourcen einer anderen nicht insofern auslesen können, dass sie Zugriff auf das DOM bzw. den Quellcode haben. Um bloß einen GET-Request irgendwohin abzusenden und ein paar Daten im Query-String mitzugeben, ist das auch gar nicht nötig, weil man wie gesagt Scripte, Bilder, Stylesheets und auch HTML-Dokumente als solche von fremden Servern einbetten kann. Und mit JSONP ist es sogar möglich, gezielt JavaScript-Daten abzufragen.
Mathias
hi,
Kann man das eventuell umgehen?
Mit Ajax bleib innerhalb Deiner Domäne. Die Kommunikation mit der weiteren Domäne kann das serverseitige Script machen, sofern es keine Secure Policies gibt, die das unterbinden.
Hotte