2016-04-05 4 views
-1

私のWebページの実際の内容がヘッダーと共にロードされる前に「読み込み中です。待つ」というメッセージを表示します。しかし、Apache 2.2.15では、ヘッダを最初に印刷することなく、印刷メッセージを表示することはできません。私は「コンテンツタイプ:text/htmlの」を印刷する場合CGI Perlを使用してヘッダーの前にページを読み込むメッセージを印刷する方法

use CGI; 

use CGI::Carp qw(fatalsToBrowser); 

#print "Content-type:text/html\n\n"; 
print '<pre>'. " This is before header" .'</pre>'; 
print qq[<DIV id="loading" style="position:absolute; font-family:arial; 
font-size:16; left:0px; top:0px; background-color:red; layer-background- 
color:white; height:100%; width:100%;"> 
<TABLE width=100%><TR><TD><B>Loading... Please wait!</B></TD></TR></TABLE> 

</DIV>]; 



my $q = CGI->new; 
print $q->header(); 

print $q->start_html(); 

warn "this is test header issue script \n"; 
print "Hello Everybody .. !"; 
print $q->end_html(); 

:上部に、私はロードを表示することができる午前、 (Perlのバージョン5.14.1、CGIのバージョン:3.52)以下のコードですメッセージが表示されますが、これはまた、必要のない上部のコンテンツタイプを表示します。
これを達成するためのPerlの方法はありますか?
これは実際のコードの簡略化した短い例です。読み込みメッセージを印刷した後、コードの制御はさらに進まず、無視してください。

答えて

2

これはCGIの仕組みではありません。

ヘッダーが内容の前に移動します。

RFC3875を参照してください:

6.2。応答タイプ

応答は、メッセージヘッダーとメッセージ本文で構成され、空白行でそれぞれ に区切られています。メッセージヘッダには、1つまたは複数のヘッダの フィールドが含まれています。本文はNULLでもかまいません。

generic-response = 1*header-field NL [ response-body ] 

何が欲しいのは、クライアント・ソリューションを必要とします。最初の応答は、間質を返します。次に、後続の要求によって完成したページがロードされます。最近、AJAX呼び出しを使用してこれが行われます。昔は、全面的なページのリロードを行っていました。

Randal Schwartz's "Watching long processes through CGI"を参照してください。

関連する問題