michael: Ajax Request an externe URL senden?

Hallo,

ich benutze prototype und will eine Ajax Request an eine externe URL senden:

function ajaxTest(){
    new Ajax.Request('http://www.nichtlocalhost.de/testextern.php', {
     method:'post',
     parameters:'nix',
      onSuccess: function(transport){
            alert("success");
      var data = transport.responseText;
     $('extern').innerHTML=data;
     },
     onFailure: function(){ alert('Something went wrong...') }
    });
}

Meine http://www.nichtlocalhost.de/testextern.php enthält einfach nur

<?php
 echo "Success";

Das ganze klappt solange ich mit http://localhost/testextern.php arbeite, es klappt aber nicht wenn ich eine Remote-URL benutze.

Geht das überhaupt oder gibts da irgendwelche Sicherheitsreglungen? Wie macht das dann z.B. Google Analytics?

  1. Hallo!

    ich benutze prototype und will eine Ajax Request an eine externe URL senden:
    Geht das überhaupt oder gibts da irgendwelche Sicherheitsreglungen?

    Du hast es erfasst. Das erlauben die Browser nicht. Du darfst per XHttpRequest nur URIs aufrufen die auf derselben Domain sind wie das JS das diese Aufruft.

    mfg
      frafu

    1. Hi,

      ich benutze prototype und will eine Ajax Request an eine externe URL senden:
      Geht das überhaupt oder gibts da irgendwelche Sicherheitsreglungen?

      Du hast es erfasst. Das erlauben die Browser nicht.

      Nicht alle, z.B. der IE6 erlaubt es, wenn du die Sicherheitseinstellungen nicht richtig setzt.

      Du darfst per XHttpRequest nur URIs aufrufen die auf derselben Domain sind wie das JS das diese Aufruft.

      Das Stichwort hierzu ist Same Origin Policy.

      Ein Workaround wäre es, ein serverseitiges Script aufzurufen, das dann die externe URL aufruft und die Daten zurückgibt.

      mfG,
      steckl

      1. Ok, aber wie machts den dann Google Analytics? Die übertragen ja auch Daten die auf www.hier.com an www.google.com mittels JS übertragen werden?

        Leider ist die Google Analytics JS aber nicht besonders gut lesbar:

        Aufgerufen wird Google Analytics  so:

        <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
        </script>
        <script type="text/javascript">
        _uacct = "id-ididid-1";
        urchinTracker();
        </script>

        1. jetzt hab ichs: Sie machens mit dem Image Trick:

          JS:

          function ajaxTest(){
          $('extern').innerHTML="nix succ";

          var i2=new Image(1,1);
            i2.src='http://www.nichtlocalhost.de/testextern.php';
            i2.onload=function() { alert("jeladen"); return; }
          }

          PHP:
          <?php

          #mache irgendwas mit den Paramtern...

          #schreibe ein Bild:
          $file = file ( "testextern.gif");
          print $file[0];

          ?>

          wobei die testextern.php ein GIF zurückgeben muss, aber halt Parameter verarbeiten kann.

          Soviel zu Sicherheit!

          Viele Grüße & Danke
          Michael

      2. Hi,

        Ein Workaround wäre es, ein serverseitiges Script aufzurufen, das dann die externe URL aufruft und die Daten zurückgibt.

        Oder eine "eigene" Resource aufrufen, die mittels mod_proxy auf die eigentliche, "fremde" Resource  weiterleitet.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!