2016-07-22 61 views
2

In CGI-Skript, auf der Oberseite des Programm, das wir verwenden, die:Warum verwenden Sie ` n` in CGI-Skript beim Drucken von Header?

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

Ohne \n er nicht ausgeführt wird. Aber innerhalb des HTML-Körpers verwenden wir nicht \n, weil \n kann keinen Sinn machen, für neue Zeile verwenden wir <br> Tag.

Warum ist \n in der Kopfzeile erforderlich?

+6

Dies hat nichts mit Perl zu tun und alles mit der [HTTP-Spezifikation] zu tun (http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html) –

+1

Nebenbei haben alle Frameworks eine sinnvolle Art, Header zu erstellen, ohne all dies eingeben zu müssen, auch CGI '$ q-> header;' –

Antwort

3

Content-type: text/html ist der HTTP-Header, nicht HTML. Zum Erkennen des Endes des HTTP-Headers muss eine leere Zeile stehen. Erste \n für Ende der aktuellen Zeile, zweite \n für neue leere Zeile.

+3

Eigentlich ist es ein CGI-Header. Der Server nimmt die CGI-Antwort und übersetzt sie in eine HTTP-Antwort. Dies umfasst das Übersetzen nackter Zeilenumbrüche in den Wagenrücklauf - Newline-Paare, die für HTTP benötigt werden. –

2

Die erste Zeile des CGI-Skript muss Content-Type: text/html und die print-Anweisung muss 2 \n Zeichen sein:

  • One die aktuelle Zeile zu beenden.
  • Die zweite, um die erforderliche Leerzeile zwischen CGI-Header und Daten zu erzeugen.

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

1

Jede HTTP-Antwort (unabhängig davon, ob der Inhalt HTML ist oder nicht) muss mit einem Statuscode beginnen (der normalerweise vom Webserver hinzugefügt wird, nicht von Ihrem CGI-Programm), einem Content-Type-Header und optional einem oder mehr zusätzliche Header. Jeder Header muss sich in einer separaten Zeile befinden (d. H. Mit einem \n abgeschlossen sein). Nachdem alle Header gesendet wurden, wird eine leere Zeile verwendet, um anzuzeigen, dass die Header vollständig sind und der Hauptteil der Antwort folgt.

Nachdem die Header abgeschlossen sind, dann die HTML (oder andere) Körper beginnt und \n nicht mehr jede wirkliche Bedeutung, da HTML ignoriert, wenn der Inhalt zu machen.

+0

HTTP trennt Kopfzeilen mit CRLF. Der CGI-Header, den die meisten CGI-Programme ausgeben, muss vom Server in die richtige Form gebracht werden. –