我遇到了一個奇怪的問題,可能與Apache不如Perl有關。在我的代碼中,當我寫:爲什麼我的CGI頭部打印爲身體的一部分?
print "content-type: text/html\n\n";
它與代碼一起打印。但是當我輸入:
$c = new CGI; $c->header();
它工作正常,並顯示HTML呈現輸出。
問題是什麼?
謝謝
我遇到了一個奇怪的問題,可能與Apache不如Perl有關。在我的代碼中,當我寫:爲什麼我的CGI頭部打印爲身體的一部分?
print "content-type: text/html\n\n";
它與代碼一起打印。但是當我輸入:
$c = new CGI; $c->header();
它工作正常,並顯示HTML呈現輸出。
問題是什麼?
謝謝
請記住,HTTP RFC規定
\r\n
用於行分隔符,沒有
\n
所以要被髮射
print "Content-Type: text/html\r\n\r\n";
相反。
你應該只使用->headers
,但爲你做這個。
此外,請注意我使用駱駝案件,而不是小寫。雖然兩者都應該可以工作,但Camel-Case是規範中使用的符號,所以這是更受歡迎的,並且更可能用於奇怪的UA。
是「內容類型:text/html的」這是輸出的第一件事?使用wget或類似來驗證實際輸出;不要相信你的眼睛或瀏覽器的視圖源。
另請注意,在mod_perl下,CGI調用請求的send_cgi_header方法,而不是僅打印標題。
是否有可能在多個地方使用CGI的header()?這是無害的,但只用一個頭部()調用,明確地打印頭部會給你看到的結果。
是的相同的代碼與使用CGI的作品。所以這就是奇怪:( – 2009-05-26 14:51:47
將您的程序縮減爲演示問題的最小示例,然後向我們顯示。有太多可能會發生的事情,拉幾條線不會幫助我們幫助你。 :) – 2009-05-26 14:54:19