roger: Header Content-Type

hi leute!

mit
print "Content-Type: text/html\n";
print "location: $url_zur_seite";

kann ich eine bestimmte url mit meinem perl-script aufrufen. dazu muss ich aber in der (hier) ersten zeile nur ein \n verwenden. mit zwei \n geht's nicht.

mein problem ist nun, dass ich diesen aufruf machen will, nachdem ich schon print "Content-Type: text/html\n\n"; angegeben habe (wegen vorheriger textausgabe).
geb ich nachmals print "Content-Type: text/html\n"; an, hat das nat. keine wirkung. meine idee war nun das erste rückgängig zu machen um nun print "Content-Type: text/html\n"; aufzurufen.

bißchen verwirrend, nicht?

ich möchte es nicht über die übliche geschichte meta-refresh geschichte machen, da ja dazwischen noch eine seite aufgerufen wird (ist dann sichtbar). mit dem location: url wird's ja direkt.

irgend welche ideen?

thanx!!

r.

  1. Hi,

    Dein Problem ist nur zufällig bei Perl aufgetaucht, hat damit aber eigentlich nichts zu tun; drum der Themenwechsel.

    kann ich eine bestimmte url mit meinem perl-script aufrufen.

    Nein, Du kannst dem Client mitteilen, dass sich die Ressource an einer anderen Location befindet - wozu der Content-Type übrigens überflüssig ist. Ob der Client diesem Redirect folgt, ist seine Sache.

    dazu muss ich aber in der (hier) ersten zeile nur ein \n verwenden. mit zwei \n geht's nicht.

    Ein (HTTP-, Mail-, ...)Header endet auf die erste Leerzeile, also auf das erste lückenlose aufeinandertreffen zweier Umbrüche. Einzelne Headerzeilen werden durch einen einzelnen Umbruch voneinander getrennt.

    mein problem ist nun, dass ich diesen aufruf machen will, nachdem ich schon print "Content-Type: text/html\n\n"; angegeben habe (wegen vorheriger textausgabe).

    Das ergibt keinen Sinn. Außerdem ist der Header zu Ende, wenn Du bereits eine Textausgabe hattest - einen zweiten Header gibt es nicht.

    meine idee war nun das erste rückgängig zu machen um nun print "Content-Type: text/html\n"; aufzurufen.

    Meine Idee wäre, mit der Ausgabe zu warten, bis Du sicher bist, dass Du sie brauchst. Meine _zusätzliche_ Idee ist es, die Header nicht selbst zu schreiben, sondern das von der header()- oder redirect()-Methode von CGI.pm machen zu lassen. Vergleiche dazu

    perldoc CGI

    ich möchte es nicht über die übliche geschichte meta-refresh geschichte machen,

    Das ist sehr vorteilhaft, dass Du dies nicht möchtest. Mit <meta>-Refresh würden sich u.U. ziemlich unangenehme Folgen auf Userseite einstellen, z.B. dass er nicht mehr über den Zurück-Button zurück kann.

    Cheatah