Ausgabe eines SSI - Scriptes auf JS Variable
piet
- javascript
- ssi
Hallo,
ist es möglich die Ausgabe eines SSI-Scriptes auf eine Javascriptvariable zu legen ??
d.h. Ich möchte die Server-IP über ein SSI-Script/SSI-Variable der Webseite beim öffnen mitgeben und mit Javascript weiterarbeiten.
Danke piet
Hallo,
SSI erzeugen doch auch nur Strings, die ins HTML eingebunden werden. Du solltest also mit den DOM-Methoden darauf zugreifen können.
Gruß
Jürgen
??
bitte kurz einen Einzeiler ... sitze auf der Leitung 😉
Hallo
dazu müsste ich wissen, wie die SSI-Einbindung aussieht.
Gruß
Jürgen
<!--#exec cgi="/cgi-bin/serverip.cgi" -->
Hallo
ich habe das noch nie ausprobiert, aber Versuch mal
<div id="ip"><!--#exec cgi="/cgi-bin/serverip.cgi" --></div>
var serverip = document.getElementById("ip").textContent;
console.log(serverip);
Möglicherweise geht es auch direkt:
var serverip = "<!--#exec cgi="/cgi-bin/serverip.cgi" -->"
Gruß
Jürgen
Hallo Robert,
wenn Du SERVER_ADDR nimmst, schließe ich mich deiner Frage an. Natürlich unter Beibehaltung aller Bedenken aus meinem anderen Post.
Und wenn mich meine Quellen nicht trügen, ist hier noch zu beachten, dass diese Variable nicht Teil des CGI Standard-Environment ist, sondern eine Apache-Erweiterung.
Rolf
Hallo @Rolf B,
sorry, hatte ganz übersehen, dass es „ausnahmsweise“ mal um die Server-IP-Adresse ging. Lustiger Weise ist im RFC 3875 genau diese Variable nicht definiert ;)
Viele Grüße
Robert
Hallo piet,
was Jürgen geschrieben hat, ist soweit machbar. In einer kontrollierten, Dir genau bekannten Umgebung. Und deshalb hätte ich ein paar Hinweise.
Weniger Umweg: Wenn Du das Server-CGI selbst schreibst, dann könntest es statt 4.8.15.16
auch einen 5-Zeiler dieser Art generieren. JavaScript auf der HTML Seite findet dann eine Variable Piet und darin ein Objekt mit der Eigenschaft ServerIP vor. Auf das Objekt kannst Du verzichten, wenn Du sonst kaum JavaScript machst - aber eine scriptlastige Seite braucht ein Namespace-Konzept für globale Elemente, daher der Piet
Container (der bei Dir vermutlich anders heißt). In der ersten Zeile stelle ich sicher, dass er existiert; in der zweiten Zeile das Unterobjekt `Server', und darin wird die Eigenschaft erzeugt.
<script type="text/javascript">
Piet = Piet || {};
Piet.Server = Piet.Server || {};
Piet.Server.IPv4 = '4.8.15.16';
</script>
Wenn Du das JavaScript Modulpattern anwendest, kannst Du die CGI-Ausgabe natürlich auch so gestalten, dass eine Variable in einem Modul angelegt wird.
IPv6: Wie das obige Beispiel schon andeutet: Mit einer IPv4 bist Du nicht fertig. IPv6 rollt an, und irgendwann wird auch dein Server über IPv6 erreichbar sein. Vielleicht schon jetzt. Und wenn ein Client ihn dann über die IPv4 adressieren will, klappt es nicht. Du müsstest also eigentlich auch eine IPv6-Eigenschaft anlegen. Und dann im Client hoffen, dass Du da weißt, wie die Anbindung erfolgt. Aber eigentlich weißt Du das im Browser gar nicht.
Shared IP: Wenn Dein Server bei einem Hoster steht, hast Du gute Chancen, dass Du gar keine eigene IP hast, sondern der Zugriff geteilt wird. Der Hoster nutzt dann den Host Request Header, um den richtigen Adressaten zu finden.
Also: Warum überhaupt eine IP? Warum kann dein Client nicht mit dem DNS Namen deines Servers arbeiten? Die Punkte IP-Version und Shared IP erledigen sich damit automatisch.
Rolf