Javascript load-Funktion bei externen Inhalten

Hallo zusammen,

ich möchte mithilfe der load()-Funktion ein DIV regelmäßig mit aktuellen Informationen füttern.

Der Code lautet wie folgt:

var auto_refresh = setInterval(
function()
{
$.ajaxSetup({ cache: false });
$(’#loaddiv’).load(‚bla.html‘);
}, 1000);

// HTML-Implementierung

Das funktioniert wunderbar, solange relativ verlinkt wird, also in diesem Fall ‚bla.html‘.

Möchte ich aber beispielsweise ‚http://www.icab.de/test.html‘ als Quelle hernehmen, geht das nicht mehr.
Warum?
Es ist doch egal, ob er eine HTML Datei, die im selben Verzeichnis liegt, reinlädt, oder eine, die nur per URL erreichbar ist?
Aber im ersten Fall tut sich was und im zweiten Fall eben gar nix :frowning:

Wäre super, wenn ihr mir helfen könntet!

Liebe Grüße,

Thomas

Hallo,

das ist schnell erklärt. Man kann mit Javascript keine fremden Domains ansteuern, das ist eine Sicherheitsmaßnahme. Bei sowas empfiehlt es sich, ein eigenes relatives Script ansteuern, welches dann per url_fopen die fremde Domain ausliest und den Inhalt an das JS weiterleitet.

Hoffe das konnte helfen.

Hallo Thomas,

bei JavaScript gibt es die s.g. Same-Origin-Policy. Es dürfen nur Inhalte von der selben Domain geladen werden, sonst könnte man theoretisch via extern Sachen unterschieben.

Hier findest du weitere Informationen: http://de.wikipedia.org/wiki/Same-Origin-Policy

Das ist eine AJAX Sicherheitsrestriktion.
Du kannst nur auf Resourcen derselben Domain zugreifen.
Das heißt, wenn Dein Code auf http://www.deins.de liegt, kannst Du auch nur auf Inhalte zugreifen, die auf http://www.deins.de liegen und nicht z.B. auf Inhalte die auf www.meins.de liegen.

Ich kenne mich jetzt nicht so gut mit jquery aus, aber google mal nach jquery ajax xss und du solltest was dazu finden.

vielen Dank an Euch alle für die schnellen, kompetenten Antworten!

Bin inzwischen auch über den Begriff der „Same-Origin-Policy“ gestolpert, konnte damit aber nicht all zu viel anfangen.
Jetzt ist die Problematik klar geworden.
Eventuell kann man ja mithilfe von Alex’ Lösung zumindest eine Art Workaround schaffen! :smile:

Nochmals Danke an alle, die Frage wäre nun soweit geklärt für mich :smile:

Bin kein „jquery“ Experte. Könnte mir aber vorstellen, dass schon der Browser das Laden von Inhalten externer Domains verhindert.

MfG
Jens Rügge

Hallo,

aus Sicherheitsaspekten reichen die Browser Informationen zwischen verschiedenen Seiten nur noch innerhalb der Domain durch.

Gruß
Chris

hi,
die Javascript-Implementierungen in Browsern folgen einer „same-origin-policy“, siehe jquery Doku
http://api.jquery.com/load/
unter Additional Notes:
„Due to browser security restrictions, most „Ajax“ requests are subject to the same origin policy (http://en.wikipedia.org/wiki/Same_origin_policy); the request can not successfully retrieve data from a different domain, subdomain, or protocol.“

Lösung: deine lokale Datei ist dynamisch, z.B. PHP, und die holt bei Aufruf den externen Content, kann ihn bei Bedarf noch aufbereiten, und tut das wieder als output raus, den du mit der load() Funktion abrufst.

Um dein Problem genauer zu beurteilen breuchte ich eigentlich mehr Infos. Z.B. unter welcher Domain dein Skript läuft. Denn genau das könnte der Knackpunkt sein.

JS-Skripte welcher unter der Domain domain1.de laufen können keine Inhalte von domain2.de laden.

Das ist aus Sicherheitsgründen so gelöst. Weitere Infos liefert Google unter dem Stichwort „Crossdomain skripting“ oder XSS.