Cross-Domain GET-Weiterleitung

Avatar of Chris Coyier
Chris Coyier am

Wenn Sie eine AJAX-Anfrage auf einer Website durchführen, muss die angeforderte URL auf derselben Domäne liegen wie die Domäne, von der aus die Anfrage gestellt wurde. Dies ist eine vom Browser auferlegte Sicherheitsbeschränkung. Es gibt einen Weg, dies zu umgehen, indem man einen Ansatz nach Art eines "Man-in-the-Middle" verwendet.

PHP ist eine serverseitige Sprache und hat die Fähigkeit, Inhalte von jeder URL abzurufen. Eine PHP-Datei kann also der "Man in the Middle" werden. Der Inhalt der PHP-Datei kann so eingerichtet werden, dass sie eine URL als Parameter akzeptiert und dann den Inhalt dieser URL zurückgibt.

<?php

    echo file_get_contents($_GET['url']);
    // WARNING: You REALLY should write something to whitelist or otherwise limit what the function will accept, or it could be a security danger to your server (people could read any file).

?>

Mit dieser Einrichtung können wir eine AJAX-Anfrage direkt an diese URL senden und dabei die URL, von der wir die Daten *eigentlich* wollen, als Parameter übergeben. Sehen Sie, wie wir "http://google.com" als Daten übergeben:

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js?ver=1.3.2'></script>
<script type='text/javascript'>
    $(function() {
       $.ajax({
            type: "GET",
            dataType: 'html',
            data: 'url=http://google.com',
            url: 'get.php',
            success: function(data){
                // Yah! Do something cool with data
            },
            error: function(){
                // Boo! Handle the error.
            }
        }); 
    });
</script>

Dies ist ein extrem einfaches Beispiel. Wenn Sie an einer robusteren Version interessiert sind, schauen Sie sich den Simple PHP Proxy an.