2012-04-20 5 views
0

私はカスタムHTTP 1.0ステータスコードを設定してAJAX(jQueryを使用)を介してよりわかりやすいエラーメッセージを返そうとしています。 PHPでPHPでLiteSpeedでカスタムHTTPレスポンスヘッダを設定する

私のようなものがあります:

header('HTTP/1.0 909 Hello World'); 
exit; 

私の開発環境で期待どおりにこれは、Apache 2.2.15を使用して動作しますが、それはたLiteSpeed 5.5を実行している本番Webサーバ上で動作しませんが。代わりにLiteSpeedは200 OKを返します。これを使用する

header('HTTP/1.0 404 Hello World'); 
exit; 

Apacheが上記のテキストと404を返します。 LiteSpeedはカスタムテキストをデフォルトの「Not Found」に置き換えます。

LiteSpeedでこの機能を無効にしてApacheと同じように動作させるにはどうすればよいですか?私は彼らが匹敵するWebサーバであると考えられていることを理解しています。

私に教えてください。

-P。

答えて

0

最初に、なぜHTTP 1.0ではなく1.1ですか?

第2に、HTTP仕様で定義されていないことをしようとしています。 LiteSpeedはおそらくヘッダーの送信を要求されたかどうかを確認し、認識できない値をデフォルト値に置き換えます。

HTTPを非標準的な方法で動作させようとするべきではありません。するとすぐにHTTPが停止します。仕様は、異なる人によって異なる時間に実装されたソフトウェアが相互運用できることを保証するためのものであり、仕様に従わない場合の動作方法は完全に未定義です。

Apacheが完全に受け入れられないヘッダーを許可するApacheは、完全に受け入れられる動作であり、LiteSpeedの動作も拒否されます。悪魔を鼻から飛ばすことは、この場合にサーバーが行うべき妥当なものになります。そして、クライアントが認識しないHTTP応答コードを使って何をするのですか?

ヘッダーに追加情報を送信する必要がある場合は、新しいヘッダーを追加することをおすすめします。以下が必要です。

header ('X-My-App-Header: Hello World!'); 
+0

有効な点があり、プラットフォーム間の互換性を高めるために、「X-Custom-Error:Hello World」を採用する必要があります。 ユーザーが何をしているかに応じて、私は実際に問題ではないように、より説明的なエラーメッセージを送信するために応答を解釈/処理します。 しかし、これはベストプラクティスではない可能性があるので、上記を達成するためのより良い選択肢を歓迎します。 – paperclip

+1

私が提案したように、HTTP仕様で返すことができる情報以外の情報を伝えるカスタムヘッダー(X-で始まる名前のヘッダー)を添付することができます。 HTTPにはあらかじめ定義されたステータスコードも豊富に用意されているので、状況に最も合ったものから有効なHTTPステータスコードを返すことをお勧めします。 – GordonM

関連する問題