Ralf: AJAX/XMLHttpRequest - same origin policy

Hallo Miteinander,

heute zufällig bin ich zum ersten Mal mit dem Thema AJAX konfrontiert worden und habe mich gefragt, ob ich das auch für meine Anwendungen einsetzen kann.

Da meine Anwendungen teilweise als Javascript bestehen, welches aus einer fremden (meiner!) Domain aufgerufen wird, kann ich wohl in dem Umfeld nichts damit anfangen, da das Javascript ja nicht in der Domain läuft, von der es geladen wurde. Und auf die Domain, in der es läuft, habe ich keinen Einfluss (jedenfalls kann ich dort keine serverseitigen Scripte ablegen).

Hoffentlich war meine Einleitung verständlich genug. Denn ich habe eine Technik im Sinn, die über Domaingrenzen hinweg funktionieren sollte.

Bisher schon lade ich in Javascript dynamisch Code nach, welcher auf beliebigen Adressen liegen kann. Dies erfolgt über ein SCRIPT-Object, wo der src-Parameter eine fremde Domain anspricht.

Zwar habe ich auch bisher schon in der Adresse Parameter mitgegeben, aber diese dienten nur zur Kennzeichnung, von woher und unter welchen Bedingungen die Routinen aufgerufen wurden. Also in der Art:
src=http://fremdedomain.de/myscript.js?p1=abc&p2=xyz ...
In den Logs konnte ich dann die Aufrufe auswerten.

Nun wäre es aber auch möglich, z.B. auf diese Art ein PHP-Script aufzurufen, welches dann die übergebenen Parameter auswerten kann.
So könnten z.B. Daten übergeben oder abgefragt werden.
Das PHP-Script muss nur dafür Sorge tragen, dass es gültiges Javascript zurück gibt, was aber m.E. kein Problem sein sollte (ich stehe kurz davor, mit PHP anzufangen).
So könnte das PHP-Script die Daten und die entsprechende Ausgaberoutine zurückgeben, welche dann nur noch vom aufrufenden Javascript ausgeführt werden müsste.

Bevor ich mich an die Realisierung meiner Gedanken mache, interessiert mich folgendes:

  1. Habe ich einen Gedankenfehler gemacht?

  2. Gibt es das vielleicht schon vorgefertigt und ich könnte mir einiges an Zeit und Mühe ersparen.

  3. Darf es das überhaupt nach der "same origin policy" geben?

  1. hi,

    [..] Hoffentlich war meine Einleitung verständlich genug. Denn ich habe eine Technik im Sinn, die über Domaingrenzen hinweg funktionieren sollte.

    Dann ist es Ajax NICHT.

    --roro

    Auf meinem Web hab ich einen kleinen Artikel über Ajax geschrieben, gibt dort unter dem Link Suche Ajax ein, da findest Du den Artikel.

    1. hi,

      [..] Hoffentlich war meine Einleitung verständlich genug. Denn ich habe eine Technik im Sinn, die über Domaingrenzen hinweg funktionieren sollte.

      Dann ist es Ajax NICHT.

      Njein. Es ist AJAX, allerdings nicht mit dem berühmt berüchtigten XMLHttpRequest sondern per ODJS (mehr hierzu im AJAX-Artikel bei Wikipedia). Hierbei werden per DOM neue Scripts nachgeladen, die auch per PHP dynamisch erzeugt werden können. Der Vorteil ist, dass so jeder Browser AJAX "versteht", der über DOM verfügt. Allerdings wird man mit dieser Technik IMHO nicht über die Domaingrenzen hinweg arbeiten können.

      --
      Gruß, Daniel | In der Realität ist die Wirklichkeit ganz anders.
      1. Allerdings wird man mit dieser Technik IMHO nicht über die Domaingrenzen hinweg arbeiten können.

        Warum gibt es hier keine Edit-Funktion :-( Mein letzter Satz war Stuss. Die Beschrenkung wirkt sich lediglich unter den Scripts aus. So kann ein Script von einer Domain A nicht auf die Objekte und Eigenschaften des Scripts der Domain B zugreifen. Woher die Scripts kommen, spielt keine Rolle...

        --
        Gruß, Daniel | In der Realität ist die Wirklichkeit ganz anders.
        1. Hallo!

          Warum gibt es hier keine Edit-Funktion :-(

          Es gibt sie. Ist ein Kombination aus "Vorschau generieren" und Hirn einschalten.

          mfg
            frafu

          1. Warum gibt es hier keine Edit-Funktion :-(

            Es gibt sie. Ist ein Kombination aus "Vorschau generieren" und Hirn einschalten.

            Ja super - bringt mir nur nichts, wenn ich nachträglich etwas hinzufügen oder entfernen will, von dem ich vor dem Absenden absolut überzeugt war ;-)

            --
            Gruß, Daniel | In der Realität ist die Wirklichkeit ganz anders.
            1. Hi,

              Ja super - bringt mir nur nichts, wenn ich nachträglich etwas hinzufügen oder entfernen will, von dem ich vor dem Absenden absolut überzeugt war ;-)

              und jetzt überleg' dir mal ganz genau, was passiert, wenn du dein bereits von anderen Teilnehmern beantwortetes Posting in seinem Sinn änderst...

              Viele Grüße
               Benjamin

              --
              Der nächste Satz ist gelogen.
              Der vorherige Satz ist wahr.
              1. Stimmt, dann hätten Folge-Postings auf mein Posting keinen Bezug mehr. OK, ich nehme alles zurück. Ich bin diese Baumstruktur nicht wirklich gewöhnt :-P

                --
                Gruß, Daniel | In der Realität ist die Wirklichkeit ganz anders.
      2. hi,

        [..] Hoffentlich war meine Einleitung verständlich genug. Denn ich habe eine Technik im Sinn, die über Domaingrenzen hinweg funktionieren sollte.

        Dann ist es Ajax NICHT.

        Njein. Es ist AJAX, allerdings nicht mit dem berühmt berüchtigten XMLHttpRequest sondern per ODJS (mehr hierzu im AJAX-Artikel bei Wikipedia). Hierbei werden per DOM neue Scripts nachgeladen, die auch per PHP dynamisch erzeugt werden können. Der Vorteil ist, dass so jeder Browser AJAX "versteht", der über DOM verfügt. Allerdings wird man mit dieser Technik IMHO nicht über die Domaingrenzen hinweg arbeiten können.

        Werd ich gelegentlich mal nachlesen. Immerhin gibt es ja auch noch andere Wege, über die ein serverseitiger Prozess (auch mit ajax angestoßen) mit anderen Domains kommunizieren kann (http, webdav, scp, ssh, ftp...).

        --roro

  2. hi,

    1. Habe ich einen Gedankenfehler gemacht?

    Bei kurzem Überfliegen: Nein.

    1. Gibt es das vielleicht schon vorgefertigt und ich könnte mir einiges an Zeit und Mühe ersparen.

    Kaum.
    Was du zurückliefern willst, dürfte ja wohl ziemlich individuell sein.

    Was dir noch die Arbeit erleichtern könnte, wären Techniken wie JSON als "Datenformat" und entsprechende client- und serverseitige Libraries zur Erzeugung/Verarbeitung dessen.

    1. Darf es das überhaupt nach der "same origin policy" geben?

    Ja, Script-Ressourcen unterliegen in ihrer Herkunft nicht der same origin policy.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }