piet: Ausgabe eines SSI - Scriptes auf JS Variable

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

  1. 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

    1. ??

      bitte kurz einen Einzeiler ... sitze auf der Leitung 😉

      1. Hallo

        dazu müsste ich wissen, wie die SSI-Einbindung aussieht.

        Gruß
        Jürgen

        1. <!--#exec cgi="/cgi-bin/serverip.cgi" -->

          1. 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

          2. Hallo piet,

            dumme Frage: Warum eigentlich nicht

            <!-- #echo var="REMOTE_ADDR" -->
            

            Viele Grüße
            Robert

            1. 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

              --
              sumpsi - posui - clusi
              1. 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

  2. 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

    --
    sumpsi - posui - clusi