Entwickler-Ecke
Off Topic - Greasemonkey + jQuery Ajax-Aufruf
SAiBOT - Mi 14.09.11 13:50
Titel: Greasemonkey + jQuery Ajax-Aufruf
Hi,
ich versuche gerade auf einer Website (fremd domain) mittels Greasemonkey einen Ajax request über jQuery zu einem PHP-Skript auf meinem Server zu machen. Ich bekomme immer eine Fehlermeldung ("Methode nicht erlaubt" oder so ähnlich). Das Problem liegt wohl daran, dass man keine Ajax Aufrufe über verschiede Domains machen kann. Ich habe dann was von JSNOP gelesen, womit dieses Vorhaben angeblich umsetzbar ist. Hat jemand schon Erfahrung mit diesen Cross-site Ajax Aufrufen und kann mir erklären wie es funktioniert?
BenBE - Mi 14.09.11 13:54
Hab da für GeSHi mal selber was gebaut, müsste ich raussuchen.
Wichtig dabei ist, dass das Script auf der Ziel-Domain sogenannte Pre-Flight-Requests mit einem Policy-Header beantwortet. Auch solltest Du beachten, dass diese Cross-Domain-Geschichten nur im Firefox richtig funktionieren. Von den andren Browsern weiß ich nicht, ob da der Support inzwischen auch da ist; das letzte Mal, wo ich das geprüft hab, sah's nicht danach aus. Ich kann bei Interesse aber mal den nötigen Source raussuchen.
Gruß,
BenBE.
Edit: Hier mal der
Link zur Testseite [
http://api.geshi.org/]. Einfach mit Live Headers die mitgesendeten Header betrachten.
SAiBOT - Mi 14.09.11 16:33
Ok, in deinem Beispiel wird der Ajax request auf dem selben Server ausgeführt wo auch das PHP-Skript liegt.
- Kann ich wenn ich zB. für Google ein GM Skript geschrieben habe, damit Anfragen an meinen eigenen Server senden?
- Ich vermute das der Ajax-Aufruf normales Javascript ist und kein jQuery (was mir reichen würde), ist das korrekt?
- Kann ich verschachtelte Javascript Arrays übermitteln?
- Muss ich spezielle Webserver (IIS) einstellungen vornehmen?
Kha - Mi 14.09.11 16:45
Für den Nuss-KI-Replayer, der auf Github gehostet ist, hat Christian Access-Control-Allow-Origin: * (das wird wohl auch Bennys Seite benutzen, hab es mir nicht angeschaut) für die entsprechende EE-Seite aktiviert, so musste ich den jQuery-Aufruf nicht einmal abändern. Funktioniert afaik immer noch nicht im IE (dort geht das tollerweise nicht über XHR, sondern über ein anderes Objekt), aber das dürfte dir ja egal sein ;) .
BenBE - Mi 14.09.11 17:21
SAiBOT hat folgendes geschrieben : |
| Ok, in deinem Beispiel wird der Ajax request auf dem selben Server ausgeführt wo auch das PHP-Skript liegt. |
Jep. Da ich aber keine GET, sondern eine HIGHLIGHT-Anfrage an den Server schicke, gelten die gleichen Beschränkungen, als wenn es eine andere Domain wäre.
SAiBOT hat folgendes geschrieben : |
- Kann ich wenn ich zB. für Google ein GM Skript geschrieben habe, damit Anfragen an meinen eigenen Server senden?
|
Für ein GM-Script gibt es in der GM-API direkt eine Funktion, die die Anfrage im Chrome-Context stellt. Die nutzt z.B. der EdgeMonkey um bei GitHub nach Updates zu suchen, ohne dass dort diese zusätzlichen Header mitgesendet werden müssen.
SAiBOT hat folgendes geschrieben : |
| Ich vermute das der Ajax-Aufruf normales Javascript ist und kein jQuery (was mir reichen würde), ist das korrekt? |
Jup. Ist normales XmlHttpRequest.
SAiBOT hat folgendes geschrieben : |
| Kann ich verschachtelte Javascript Arrays übermitteln? |
Jup. Alles was normales XHR auch kann.
SAiBOT hat folgendes geschrieben : |
Muss ich spezielle Webserver (IIS) einstellungen vornehmen?
|
Jain. Du musst auf dem Webserver die Accept-Policy-Header konfigurieren. Ob du die nun via Script erzeugst (wie ich das auf api.geshi.org mache, oder via Server-Konfiguration, ist eigentlich egal. Wichtig ist nur, DASS sie gesendet werden.
Kha hat folgendes geschrieben : |
| Für den Nuss-KI-Replayer, der auf Github gehostet ist, hat Christian Access-Control-Allow-Origin: * (das wird wohl auch Bennys Seite benutzen, hab es mir nicht angeschaut) für die entsprechende EE-Seite aktiviert, |
Jip. Ich nutz aus der Reihe noch paar mehr, um auch zusätzliche HTTP-Methods zuzulassen (z.B. eben HIGHLIGHT und VERSION).
Kha hat folgendes geschrieben : |
| so musste ich den jQuery-Aufruf nicht einmal abändern. Funktioniert afaik immer noch nicht im IE (dort geht das tollerweise nicht über XHR, sondern über ein anderes Objekt), aber das dürfte dir ja egal sein ;) . |
IE ist ja auch kein Browser. :mahn:
SAiBOT - Do 15.09.11 15:30
Habe es über die GM API-Funktion gelöst, reicht mir völlig. Vielen Dank euch beiden!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!