0

(jQueryを使用して)AJAXを介してより説明的なエラーメッセージを返すために、カスタムHTTP1.0ステータスコードを設定しようとしています。

PHPでは次のようなものがあります:

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

これは、Apache 2.2.15を使用する開発環境では期待どおりに機能しますが、LiteSpeed5.5を実行している本番Webサーバーでは機能しません。LiteSpeedは代わりにを返します200 OK

これを使用する:

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

Apacheは404上記のテキストでを返します。LiteSpeedは、カスタムテキストをデフォルトの「見つかりません」に置き換えます。

LiteSpeedでこの機能をオーバーライドして、Apacheと同じように機能させる方法はありますか?同等のWebサーバーであると想定されていることを理解しています。

どんなアイデアでも、私に知らせてください。

-P。

4

1 に答える 1

0

まず、なぜ1.1ではなくHTTP 1.0なのか?

次に、HTTP仕様で定義されていないことを実行しようとしています。LiteSpeedはおそらく、送信を求められているヘッダーをチェックし、認識できない値をデフォルト値に置き換えます。

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

Apacheがヘッダーを通過させないことは完全に許容できる動作であり、LiteSpeedの通過を拒否する動作も同様です。この場合、悪魔を鼻から飛ばすのもサーバーにとって有効なことです。そして、クライアントは認識しないHTTP応答コードで何をするつもりですか?

ヘッダーで追加情報を送信する必要がある場合は、新しいヘッダーを追加してみませんか?次のようにする必要があります。

header ('X-My-App-Header: Hello World!');
于 2012-04-20T11:12:57.243 に答える