Theo: Perl: HTML Generation mit Hyperlinks auf lokale Dateien

Hallo,
mittels unten angehängtem Perl Script generiere ich eine HTML Seite.
Das ganze ist lokal auf meinem Rechner. TinyWeb ist als lokaler Webserver installiert.
Das Perl Skript kann ich auch aufrufen, Seiten werden generiert, etc. nur funktioniert in einer derart generierten HTML Datei ein Link auf eine lokale Datei nicht.

Der 2. Link funktioniert, beim 1. passiert gar nichts.
Warum? Wo muss ich noch irgendwelche Einstellungen vornehmen? (evtl. bei TinyWeb, das cgi-bin Verzeichnis befindet sich irgendwo anders P:/Software/Scripts/...).

Kopiere ich allerdings den Quelltext in eine Datei Test.html und rufe diese Datei auf, funktioniert auch der 1. Link.
Der Pfad ist doch absolut und eindeutig?! Wo ist der Haken?

Danke für hilfreiche Hinweise!
Theo.

#!usr/local/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";

print <<"ENDE";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html><head><title>Rename Papers</title></head><body>

<A href="file:///D:/Download/Tutorials/HTML/index.htm">test</A><br>
<A href="http://www.firefox.com">Firefox</A><br>

</body></html>
ENDE

  1. Hell-O!

    Das Perl Skript kann ich auch aufrufen, Seiten werden generiert, etc. nur funktioniert in einer derart generierten HTML Datei ein Link auf eine lokale Datei nicht.

    Was heißt "funktioniert nicht"? Wie äußert sich das? Es sollte wenigstens eine Fehlermeldung im Browser kommen.

    Kopiere ich allerdings den Quelltext in eine Datei Test.html und rufe diese Datei auf, funktioniert auch der 1. Link.

    Bitte rufe dein Skript auf und poste den relevanten HTML-Quelltext, so wie ihn der Browser serviert bekommt.

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)
    Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.
    1. Was heißt "funktioniert nicht"? Wie äußert sich das? Es sollte wenigstens eine Fehlermeldung im Browser kommen.

      Nein! Beim ersten Link passiert rein gar nichts! Keine Fehlermeldung!
      Der Link file:///D:/...  wird zwar im Firefox unten in der Statuszeile angezeigt, wenn ich mit der Maus drüber geh, aber es passiert nichts wenn ich drauf drücke.

      Bitte rufe dein Skript auf und poste den relevanten HTML-Quelltext, so wie ihn der Browser serviert bekommt.

      Bitteschön:
      Wenn ich vorher auf einen Button gedrückt und damit das Perl-Skript gestartet habe, wird dieser Text im Browser generiert:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
             "http://www.w3.org/TR/html4/loose.dtd">
      <html><head><title>Rename Papers</title></head><body>

      <A href="file:///D:/Download/Tutorials/HTML/index.htm">test</A><br>
      <A href="http://www.firefox.com">Firefox</A><br>

      </body></html>

      1. <A href="file:///D:/Download/Tutorials/HTML/index.htm">test</A><br>
        <A href="http://www.firefox.com">Firefox</A><br>

        Hm, und eine normale HTML-Datei mit diesem Inhalt funktioniert? Das könnte eventuell tatsächlich mit TinyWeb zu tun haben, hast du schonmal auf der Webseite von TinyWeb nachgesehen? Eventuell unterstützt TinyWeb das file-Protokoll nicht.

        Siechfred

        --
        Ich bin strenggenommen auch nur interessierter Laie. (molily)
        Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.
        1. Hi Siechfred,

          Danke, das wird es wohl gewesen sein. Ich habe über TinyWeb und file:// Protokol auf die Schnelle allerdings noch nichts gefunden.

          Aber machen wir das Ganze eben mit http://

          Jetzt verstehe ich allerdings nicht warum folgende Zeilen

          <A href="http://localhost/cgi-bin/Test.html">test</A><br>
          <A href="http://www.firefox.com">Firefox</A><br>

          zu folgender Fehlermeldung führen:
          Internal Server Error: FIREFOX.EXE is a GUI application

          Tu ich die Test.html NICHT ins cgi-bin Verzeichnis dann FUNKTIONIERT's wie gewünscht.
          <A href="http://localhost/Test.html">test</A><br>
          <A href="http://www.firefox.com">Firefox</A><br>

          Ich versteh zwar nicht wieso, aber manchmal muss man froh sein, dass Sachen überhaupt funktionieren.

          Theo.

          1. Jetzt verstehe ich allerdings nicht warum folgende Zeilen
            <A href="http://localhost/cgi-bin/Test.html">test</A><br>
            <A href="http://www.firefox.com">Firefox</A><br>
            zu folgender Fehlermeldung führen:
            Internal Server Error: FIREFOX.EXE is a GUI application

            Scheint eine Eigenart von TinyWeb zu sein. Auf der FAQ-Seite wird darauf hingewiesen, bei so einem Fehler die Software zu modifizieren. Aber unabhängig davon haben m.E. außer Skripten keine anderen Dateien was in cgi-bin zu suchen :-)

            Siechfred

            --
            Ich bin strenggenommen auch nur interessierter Laie. (molily)
            Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.
          2. Danke, das wird es wohl gewesen sein. Ich habe über TinyWeb und file:// Protokol auf die Schnelle allerdings noch nichts gefunden.

            Das file:// Protokoll ist völlig unabhängig vom Server, dass setzt der Browser um. Ich vermute eher einen Fehler in der Schreibweise

            Aber machen wir das Ganze eben mit http://

            Jetzt verstehe ich allerdings nicht warum folgende Zeilen

            <A href="http://localhost/cgi-bin/Test.html">test</A><br>
            <A href="http://www.firefox.com">Firefox</A><br>

            zu folgender Fehlermeldung führen:
            Internal Server Error: FIREFOX.EXE is a GUI application

            Du kannst keine html dateien in einem cgi Verzeichniss ausführen, offensichtlich versucht dein Server, die mit html Dateien verknüpfte anwendung zu starten und deshalb diese Meldung.

            Tu ich die Test.html NICHT ins cgi-bin Verzeichnis dann FUNKTIONIERT's wie gewünscht.

            Genau

            Ich versteh zwar nicht wieso, aber manchmal muss man froh sein, dass Sachen überhaupt funktionieren.

            Es gibt immer eine Erklärung ;-)

            Struppi.

            --
            Javascript ist toll (Perl auch!)
            1. Hell-O!

              Das file:// Protokoll ist völlig unabhängig vom Server, dass setzt der Browser um. Ich vermute eher einen Fehler in der Schreibweise

              Da laut OP der vom Skript generierte HTML-Code identisch mit dem ist, der in einer "normalen" HTML-Datei steht, der erste im Gegensatz zum zweiten jedoch nicht wie gewünscht funktioniert, kann es eigentlich nicht an der Schreibweise liegen.

              Es gibt immer eine Erklärung ;-)

              Hehe, auf die bin ich jetzt schon gespannt :-)

              Siechfred

              --
              Ich bin strenggenommen auch nur interessierter Laie. (molily)
              Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.
              1. Das file:// Protokoll ist völlig unabhängig vom Server, dass setzt der Browser um. Ich vermute eher einen Fehler in der Schreibweise

                Da laut OP der vom Skript generierte HTML-Code identisch mit dem ist, der in einer "normalen" HTML-Datei steht, der erste im Gegensatz zum zweiten jedoch nicht wie gewünscht funktioniert, kann es eigentlich nicht an der Schreibweise liegen.

                Es gibt immer eine Erklärung ;-)

                Hehe, auf die bin ich jetzt schon gespannt :-)

                Sind wir auf einem Windows System?
                Dann kann es evtl. daran liegen dass er keine Backslashes verwendet hat. Rausfinden kann es letztlich nur der OP, da normalerweise das file Protokoll ohne Probleme lokale Dateien lädt.

                Struppi.

                --
                Javascript ist toll (Perl auch!)
                1. Es gibt immer eine Erklärung ;-)
                  Hehe, auf die bin ich jetzt schon gespannt :-)
                  Sind wir auf einem Windows System?

                  Ja, so sieht es aus.

                  Dann kann es evtl. daran liegen dass er keine Backslashes verwendet hat.

                  Das ist hier unter Win2k sowohl dem IE als auch dem FF egal. Selbst wenn es das nicht wäre, muss wenigstens eine Fehlerseite kommen - doch die kommt laut OP nicht. Ich vermute nachwievor, dass TinyWeb der Übeltäter ist.

                  Siechfred

                  --
                  Ich bin strenggenommen auch nur interessierter Laie. (molily)
                  Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.
                  1. Das ist hier unter Win2k sowohl dem IE als auch dem FF egal. Selbst wenn es das nicht wäre, muss wenigstens eine Fehlerseite kommen - doch die kommt laut OP nicht. Ich vermute nachwievor, dass TinyWeb der Übeltäter ist.

                    Du kannst doch auch ohne Webserver mit file:// auf Dateien zugreifen.
                    Krallt TinyWeb sich das Protokoll? Fände ich seltsam.

                    Struppi.

                    --
                    Javascript ist toll (Perl auch!)
                    1. Krallt TinyWeb sich das Protokoll? Fände ich seltsam.

                      Scheint aber so zu sein. Sobald TinyWeb läuft, verhält sich eine entsprechende Testseite genauso, wie vom OP beschrieben - es passiert nichts beim Klick auf den Link zu einer lokalen Datei. Dies allerdings nur, wenn ich die Datei via http://localhost aufrufe. Irgendwie scheint es so, als ob das System denkt, dass ein Zugriff auf Dateien oberhalb von Document-Root erfolgen soll und blockt diesen ab.

                      Siechfred

                      --
                      Ich bin strenggenommen auch nur interessierter Laie. (molily)
                      Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.