| Autor |
Beitrag |
SAiBOT
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mi 14.09.11 13:50
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?
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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. Einfach mit Live Headers die mitgesendeten Header betrachten.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: 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?
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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. 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Für diesen Beitrag haben gedankt: SAiBOT
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Do 15.09.11 15:30
Habe es über die GM API-Funktion gelöst, reicht mir völlig. Vielen Dank euch beiden!
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
|