2012-03-26 11 views
1

Firefoxで狂った問題が発生しています。私はこの問題がFirefoxから出てくるのか、それとも自分のカスタムWebサーバー(Delphiで作ったもの)か、それが何であるかは分かりません。この問題はFirefox(およびOpera)でのみ発生し、頭から下に向かってすべてを動かしています。また、本文の先頭にランダムな文字を追加しています。不思議なことに、それは完全に100%の空のWebページでもそれを行います。Firefoxがヘッダーを破棄してランダムな文字を追加する

私はこのような単純なページをテストしています:

<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 

</body> 
</html> 

Webサーバーに関しては、私はIdHTTPWebBrokerBridge(インディ)を使用して、DelphiでカスタムHTTPアプリケーションを構築することだし、単純に(ContentStreamを交換しますまたはContent)そうのようなRequestの...上記の掲示、および手順は、デフォルトの要求ハンドラのイベントハンドラとしてSomeFile.htmlが空ページである

procedure TDashModule.DashConsoleHomeAction(Sender: TObject; 
    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); 
begin 
    Response.ContentType:= 'text/html'; 
    Response.ContentStream:= TFileStream.Create('C:\SomeDir\SomeFile.html', fmOpenRead or fmShareDenyNone); 
end; 

...。

Chrome、IE、Safariなどでは、すべてが元のコードとまったく同じです。あなたが見ることができるように、titleタグがbodyまで移動されている

<html> 
<head> 
</head> 
<body> 
 
<title>Test</title> 
</body> 
</html> 

、およびいくつかのランダムな文字は体の一番最初に登場している。しかし、Firefoxの(とOpera)は、これを生産しています。元のページをFirefoxで元のファイルとして表示すると、正しく表示されます。しかし、DelphiでWebサーバーを使用している場合、Firefoxはこのページ(およびすべてのページ)を破棄しています。

これを行う可能性があり、それを修正する方法はありますか?

Aを再現する手順)ちょうどこのコンテンツ付き)のVisual Studio 2010年に私のために新しいHTMLページを(作成:

<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 

</body> 
</html> 

B)のDelphi XE2では、新しいプロジェクトを開始:File > New > Other... > Web Broker > Web Server Application

C)Stand-alone VCL Applicationを選択>次に>完了

D)DEFを作成DefaultHandler項目についてはオールトハンドラ(WebModule1右クリックして、Action Editor...を選択)

E)、イベントプロパティに移動し、OnAction

Fのためのイベントハンドラに行く)がこれに既に存在だ任意のコードを置き換え(置き換えますHTMLファイル名とファイル名):

Response.ContentStream:= TFileStream.Create('C:\SomeDir\SomeFile.html', fmOpenRead or fmShareDenyNone);

E)は、アプリケーションを実行し、 "ブラウザで表示" をクリックする - 必要に応じてコピー/ FirefoxのURLを貼り付けます。ヘルプへ

UPDATE

おかげで、私は問題があっ属していなかったファイルのBOMタグであると認識するようになりました。TFileStreamがどのように機能するかに起因して、このコードを含むファイルのすべての小さな部分が読み込まれます。代わりにTStringList.LoadFromFile()を使用するようにメソッドを変更しました。これは自動的にそれを検出し、TStringList.Textを読み取ってResponse.Contentに割り当てることもできます。

+0

すべてのコメントがなくなって? – OnTheFly

+0

コメントは批判と皮肉の声で出てきましたが、他の人のコメントはきれいであり、削除されてはいけません。 –

+1

批判は** that ** bad :-)とにかく、この 'geheimestaatsmoderation'は制御不能にほとんど成長していないようです。 – OnTheFly

答えて

7

明らかにthose three characters constitute a Unicode UTF-8 Byte-Order Markです。それらはファイルの先頭に置かれ、実際にレンダリングされないはずです。テキストインタプリタに使用されているエンコーディングを知らせるためのメタデータです。あなたのファイルのの中になぜあなたが1つを見ているのかわからない! 16進エディタでオリジナルを開いて、BOMが埋め込まれているかどうかを確認してください。

(あなたがバイナリエディタを持っていない場合は、あなたは非常に良い無料1 hereを得ることができます。これは、でも、Delphiで書かれています!)

+2

BOMが ''に表示される最も一般的な理由は、ファイルが空白で始まりBOMが続く場合です。 –

+0

それが本体に移動されるという問題は、Firefoxが混乱して、 "text"は 'body'タグに属していますが、その間に' head'タグのすべてがそれと一緒に行かなければならないと考えています。 –

+0

@ jerry:そうかもしれない。 16進エディタで問題をまだ確認しましたか? –

2

これらの3文字は、UTF-8 BOMです。 BOMはそこにあるべきではありません。私はそれがどこから来たのかは言えません(おそらくそれはファイルのものですが)それを削除する必要があります。

間違いなくあなたの最後です! IEとWebkitブラウザがページをうまく表示するという事実に惑わされないでください。それは、単にそれらのブラウザが寛大であることを意味します。

関連する問題