Autor Beitrag
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 14.09.11 17:21 
user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
  • 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.

user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
  • Ich vermute das der Ajax-Aufruf normales Javascript ist und kein jQuery (was mir reichen würde), ist das korrekt?

  • Jup. Ist normales XmlHttpRequest.

    user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
  • Kann ich verschachtelte Javascript Arrays übermitteln?

  • Jup. Alles was normales XHR auch kann.

    user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
  • 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.

    user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
    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).

    user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
    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:

    _________________
    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 Threadstarter
    ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
    Beiträge: 323
    Erhaltene Danke: 6

    XP SP2; 7
    D7; D2009
    BeitragVerfasst: 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.