2016-07-22 50 views
2

在CGI腳本,在上面我們使用的程序:爲什麼在打印標題時在CGI腳本中使用` n`?

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

不使用\n它不會執行。但是,在HTML體內,我們不使用\n因爲\n不能作出任何意義上說,新的生產線,我們使用<br>標籤。

爲什麼\n需要在標題行?

+6

這與Perl和與HTTP規範無關的所有內容(http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html) –

+1

另外,所有的框架都有一個不需要輸入所有這些,甚至CGI'$ q-> header;' –

回答

3

Content-type: text/html是HTTP報頭,而不是HTML。爲了檢測HTTP頭的結尾必須是一個空行。第一個\n爲當前行結束,第二個\n爲新的空行。

+3

創建標題的明智方式其實,它是一個CGI標題。服務器接受CGI響應並將其轉換爲HTTP響應。這包括將裸新行轉換爲回車 - HTTP所需的新行對。 –

2

CGI腳本的第一行必須是Content-Type: text/html和打印語句必須有2個\n字符:

  • 一個終止當前行。
  • 第二產生需要CGI標頭和數據之間的空行。

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

1

任何HTTP響應(無論該內容是否是HTML或不)必須與一個狀態碼,Content-Type頭(其通常由web服務器,而不是CGI程序添加的)開始,和任選的一種或更多額外的標題。每個標題必須在一個單獨的行上(即以\n終止)。所有標題發送完畢後,將使用空行表示標題已完成,並且響應正文如下。

標題完成後,然後 HTML(或其他)正文開始,\n不再有任何實際意義,因爲HTML在呈現內容時忽略它。

+0

HTTP使用CRLF分隔標題行。大多數CGI程序輸出的CGI標題都是爲了服務器的調整,並擴展到正確的形式。 –

相關問題