Zum Inhalt springen

Ajax - Widget ?, Daten von anderem Server abholen


Aiun

Empfohlene Beiträge

hu,

ich versuche mittels Ajax Daten von einem anderen server abzufragen / einen Service/Dienst anzusprechen.

Der Server ist auch von uns, stehen halt nur unter verschiedenen Domains.

Firefox und IE 6/7 sperren das aus Sicherheitsgründen.

Sicherheit ist ja schön ;) aber wenn ich an den Inhalt will, schaffe ich das auch über andere wege. / umleitung über PHP und Server.

Aaaber das ist in dem fall nicht sinn der Sache, der Client soll flexibel sein und nicht auf Funktionen des Portalservers angewiesen sein. Der Portalserver liefert nur den JS Code um bei den anderen den jeweiligen content abzurufen.

Gibt es eine Möglichkeit diese Fehlermeldung abzuschalten ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Ajax ist eine (meist) in Javascript geschriebene Schnittstelle, die XML Daten verarbeitet. Woher nun die XML Daten kommen sollte egal sein. Aber Deine Problemstellung ist wenig aussagekräftig, da wirklich relevanten Informationen fehlen, um das Problem einmal selbst nachvollziehen zu können.

Außerdem verstehe ich den Begriff "Portalserver" nicht. Dein Browser wird von einem Webserver eine HTML Datei erhalten, dazu passenden Ajax Javascript-Code, dieser wird dann lokal von Deinem Browser interpretiert, der auf Grund des JS wieder Daten von einem Webserver erhält bzw Daten an diesen sendet, das ganze setzt meist auf einen Webservice, der XML basiert ist auf.

In Deinem Browser muss natürlich aktiviert sein, dass JS Code ausgeführt werden darf

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Woher nun die XML Daten kommen sollte egal sein.

[...]

In Deinem Browser muss natürlich aktiviert sein, dass JS Code ausgeführt werden darf

Nein, es ist nich egal woher die Daten kommen. Such mal nach der "Same-domain security policy" von XMLHttpRequest() ;)

Eine Ajax Abfrage kann nur auf dieselbe Domain gehen, von der die Seite kommt. Und das ist auch gut so!

EDIT:

Ohne diese Policy könnte ein Javascript alles tun, was der User sonst tun kann, nur ohne dass der User weiß oder etwas davon mitbekommt, dass er das gerade tut.

EDIT2:

Z.B. hier auf FI.de Beiträge posten...

Dazu muss nur der "immer eingelogt" cookie gesetzt sein und ein JS könnte unbemerkt hierher surfen, Seiten abrufen und auswerten und eigene Daten posten etc.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, sie kommen vom selben Server (auch wenn unterschiedliche Namen), die IP ist beim "gleichen" Server identisch, auch wenn verschiedene Namen.

Wenn Du Zugriff auf den Server hast, warum legst Du dann nicht für jede Domain z.B. einen Symlink an oder über einen Rewrite / Proxy könntest Du die Anfragen vom Server umleiten

HTH

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

:) danke jester, endlich mal eine Erklärung für diese Regel, die ich akzeptieren kann.

Flash, bitte erkläre genauer, ein rewrite ?

Ich will, wie gesagt, verhindern das der Portalserver die last aller verbindungen abbekommt, d.h. kein PHP, das dann die daten vom Applikationsserver einholt.

Nochmal zur Begriffserklärung:

Mit Portalserver ist der Server und die Seite gemeint, an der sich z.B. der user anmeldet. Prinzipiell könnte es aber auch eine lokale html-Datei sein. Ist zwar nicht geplant, aber würde gehen.

der Portalserver liefert dem User, abhängig von dessen Einstellungen verschiedene Inhalte die per Ajax von verschiedenen Servern geladen werden.

Für den Anfang sprechen wir von 2-3 custom-Anwendungen die eingeladen werden, ich könnte mir aber auch sowas wie RSS-Reader und den ganzen quark vorstellen. Die momentane Userwelt steht ja drauf :(

Also mal eine andere Fragestellung:

wie bekomme ich das mit möglichst wenig Last weitergeleitet ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin moin,

Flash, bitte erkläre genauer, ein rewrite ?

aber klar doch: Also mit einem Rewirte bzw ProxyReverse kannst Du über den Webserver (ich nehme als Bsp Apache) einfach eine URL umbiegen.

Nehmen wir an, ich habe einen Dienst auf Port 2000 laufen, ich will den aber über einen virtuellen Namen meindienst.meinedomain.de ansprechen, ohne dass man Neue Internetprsenz eingeben muss. Dann weise ich den Server an einfach alles was im Host auf meindienst... ankommt einfach umzuleiten eben auf www...:2000 und wenn er das HTML Dokument dann erhält schreibt ändert er alle Link-Angaben (und andere) auf meindienst... um.

Wenn Du nun z.B. Deinen Portalserver im Host "portal" laufen hast, aber Deine XML Daten von "server1" generiert werden, dann dürfen ja die Ajax Code Sachen nicht auf server1 zugreifen, wenn sie von portal geliefert werden. Nutze das dann einfach aus, dass Du auf portal eine Rewrite-Regeln einbaust, die z.b. wenn http://portal/meinxml.xml aufgerufen wird, dieses einfach auf http://server1/meinphpxml.php umgeleitet wird. Da das serverseitig geschieht, denke ich nicht, dass da dann Probleme auftreten.

Wenn Du unter Unix arbeitest, dann kannst Du doch das Script, das die XML Datei liefert auch per Symlink einfach in die Verzeichnisse der anderen Hosts verteilen (musst dafür dann nur FollowSymlink für den Apache anmachen), damit sieht es nach außen so aus, als hätte jeder Host seine eigene XML Datei, physikalisch ist aber die gleiche.

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

aber klar doch: Also mit einem Rewirte bzw ProxyReverse kannst Du über den Webserver (ich nehme als Bsp Apache) einfach eine URL umbiegen.

Stimmt was du da sagst, aber IMHo etwas abenteuerlich formuliert ;)

Ein Rewrite ist eigentlich ein Umschreiben der URL. Das wird im allgemeinen von mod_rewrite (oder ähnlichem beim IIS und wie es bei anderen Webservern aussieht weß ich nicht) getan. Das passiert auf dem Server, aber noch bevor der eigentliche Webserver die anfrage bekommt. Für den Webserver sieht es also so aus, als wenn die umgeschriebene URL angefordert wurde.

Das ist aber nicht wirklich das, was Aiun will.

Der Proxy ist genau das. Für den Apache gibt es z.B. mod_proxy. Das tut nichts anderes, als einfach eine Anfrage an einen anderen Server zu stellen und die Antwort zurückgeben. so wie wenn der Benutzer gleich beim anderen Server angefragt hätte, nur eben über einen Proxy.

Als ReverseProxy bezeichnet man das allerdings nicht, denn ein ReverseProxy ist ein Lastenverteiler. so einen ReverseProxy schaltet man vor seine Server um die Last und die Anfragen durch den ReverseProxy auf die verteilen zu lassen.

Naja, ist ja schon ähnlich... ist ja auch egal :D

Auf jeden Fall könnte damit eine Ajax-Anfrage auf meinDomain.tld/ajaxScript.php an eine weitere Domain meineZweiteDomain.tld/ajaxScript.php umgeleitet werden, ohne dass die same-domain-policy da einschreiten würde (der Client bekommt davon ja nichts mit).

Wie das mit der Last aussieht weiß ich aber nicht, denn der Server bekommt ja auf jeden Fall die Anfragen. Es wird aber auf jeden Fall weniger CPU Last sein (und auch Speicher), als wenn er die selbst beantworten würde.

Die SymLink-Methode bringt ihm nichts, denn dann könnte er es ja auch auf derselben Domain laufen lassen. Der Symlink wird ja dann vom selben Server (Software) ausgeführt, da ein SymLink AFAIK nicht auf ein z.B. http-Protokoll verweisen kann.

EDIT:

Also der ReverseProxy ist wohl das einige was er machen kann. Ich denke da an einen Proxy noch vor allen seinen Servern, der die Anfragen bekommt und dann entsprechend weiterleitet (an den Portalserver oder eben an andere).

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja, das klingt gut. Insbesondere da jede Anwendung einen namespace, also Ordnernamen oder Dateiprefix haben wird (über rewrite dann an PHP gegeben).

hmm, hat mit sowas einer von euch schon Erfahrung ? ich mache mir da noch etwas sorgen was die Gültigkeit von COOKIEs und die weiterleitung von File-Uploads angeht.

Zur Info: das Thema ist nicht mehr hochaktuell :) aber neugierig bin ich trotzdem.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...