2009-05-26 48 views
0

我遇到了一個奇怪的問題,可能與Apache不如Perl有關。在我的代碼中,當我寫:爲什麼我的CGI頭部打印爲身體的一部分?

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

它與代碼一起打印。但是當我輸入:

$c = new CGI; $c->header(); 

它工作正常,並顯示HTML呈現輸出。

問題是什麼?

謝謝

+0

將您的程序縮減爲演示問題的最小示例,然後向我們顯示。有太多可能會發生的事情,拉幾條線不會幫助我們幫助你。 :) – 2009-05-26 14:54:19

回答

1

請記住,HTTP RFC規定

\r\n 

用於行分隔符,沒有

\n 

所以要被髮射

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

相反。

你應該只使用->headers,但爲你做這個。

此外,請注意我使用駱駝案件,而不是小寫。雖然兩者都應該可以工作,但Camel-Case是規範中使用的符號,所以這是更受歡迎的,並且更可能用於奇怪的UA。

2

是「內容類型:text/html的」這是輸出的第一件事?使用wget或類似來驗證實際輸出;不要相信你的眼睛或瀏覽器的視圖源。

另請注意,在mod_perl下,CGI調用請求的send_cgi_header方法,而不是僅打印標題。

是否有可能在多個地方使用CGI的header()?這是無害的,但只用一個頭部()調用,明確地打印頭部會給你看到的結果。

+0

是的相同的代碼與使用CGI的作品。所以這就是奇怪:( – 2009-05-26 14:51:47

相關問題