Kann ich Daten von einer externen Seite über AJAX laden?

8

Ich habe gerade angefangen, jQuery und AJAX zu lernen. Ich kann eine lokale Seite (auf meiner Festplatte) in ein div via jQuery.load() laden, aber externe Seiten scheinen nicht zu funktionieren. Ich habe sogar wireshark verwendet, um zu überprüfen, ob die Daten vom Server gesendet werden (ist es). Beispielcode ist unten:

%Vor%

Ist das überhaupt möglich? Wenn ja, wie?

    
int3 09.03.2010, 14:14
quelle

8 Antworten

3

Out of the box: Nein. Es ist ein Sicherheitsproblem. Es gibt wenige verschiedene Problemumgehungen .

    
Hooray Im Helping 09.03.2010, 14:18
quelle
4

Sie können keine Ajax-Aufrufe an eine andere Domäne ausführen, als das Skript stammt.

Um so etwas zu tun, müssen Sie eine Proxy-Seite auf Ihrer eigenen Seite verwenden, zB:

%Vor%

getgoogle.php:

%Vor%     
Phil Rykoff 09.03.2010 14:18
quelle
2

Aus Sicherheitsgründen können Sie mit AJAX keine Seite von einer anderen Domäne (oder einem anderen Protokoll oder Port) anfordern.

Stattdessen können Sie ein serverseitiges Skript auf Ihrem Server schreiben, um Anforderungen an eine andere Domäne weiterzuleiten. (Dies ist nicht möglich, wenn Sie eine Seite von file:// url ausführen)

    
SLaks 09.03.2010 14:18
quelle
2

Ajax? Ja. XHR? Nein (es sei denn, der Browser implementiert Cross-Site-XHR , die noch nicht weit verbreitet ist.

Um die Daten mit Ajax ohne Verwendung von XHR zu erhalten, muss die externe Site die Daten im JSONP-Format bereitstellen .

Alternativ können Sie die Daten über ein serverseitiges Skript auf Ihrem Server weitergeben, sodass es vom selben Host stammt (soweit es JavaScript betrifft).

    
Quentin 09.03.2010 14:20
quelle
2

Nein, ist es nicht. Sehen Sie sich die Richtlinie für gleiche Herkunft an. Für die Website, die Sie anfordern möchten, muss JSONP aktiviert sein, damit dies funktioniert Sie würden einen domainübergreifenden Rückruf verwenden. Alternativ könnten Sie einen Proxy auf Ihrer eigenen Domain erstellen, der die Seite im Auftrag Ihrer Ajax-Anfrage ergreift.

    
karim79 09.03.2010 14:20
quelle
2

Sie stoßen auf die Richtlinie Gleiche Herkunft . Sie können mit AJAX nicht auf Daten von einer externen Domäne zugreifen, da dies als Sicherheitsrisiko gilt. Der Grund dafür ist, dass AJAX-Anfragen mit Cookies arbeiten, die vom Browser gespeichert werden. Wenn ich auf facebook.com zugreifen würde und Sie dort angemeldet wären, würde der Cookie gesendet und ich hätte Zugriff auf Ihre persönlichen Daten / p>     

Andy E 09.03.2010 14:18
quelle
1

Laden Sie dieses PHP-Skript, anstatt zu versuchen, die Webseite direkt zu laden

%Vor%

Bearbeiten: Oder einfach wie die Lösung eines Schergen mit file_get_contents

    
Ergec 09.03.2010 14:22
quelle
0

Sie können Ajax nicht von einer anderen Domain aus anrufen. Überprüfen Sie die JSON-Technik dafür

    
Aykut Akıncı 09.03.2010 14:17
quelle

Tags und Links