2012-06-27 21 views
5

私はCGIスクリプトとして動作するC++プログラムを持っていますが、現在Cgiccを使って解析と書式設定を行っています(途中で置き換えられます)。私の応答を構築する場合、私は私のスクリプトのヘッダーが正しくありません。 Bad Header = HTTP/1.1 302 Found

HTTP/1.1 302 Found 
Location: www.bla.com 

のようなものを作成しますcgicc::HttpResponseHeaderを、使用これが私にはかなり標準見えます。

  1. がラインStatus: 302 Found

に代わり追加HTTP/...行を削除します。ただし、Webサーバーは、私はこの問題を解決する方法を見つけた私

<...> malformed header from script. Bad header=HTTP/1.1 302 Found: script.cgi 

に与えて、その上でチョーク実際、それはまさにcgicc::HttpRedirectHeaderのことです。私は今、2つの質問を持っています:

  1. この行は、標準ではありません。HTTP/1.1 302 Found
  2. そうでない場合、cgicc::HttpResponseHeaderはなぜそうしていますか?そうであれば、なぜ私のウェブサーバはそれに苦しんでいますか?

注これを回避する方法はありません。その方法を知っています。私は何が起こっているのか理解したい。

乾杯 オレ

答えて

5

HTTPライン標準のHTTPではなく、標準CGIです。

CGIでは、スクリプトはStatusヘッダーを使用してステータスをWebサーバーに返信し、WebサーバーはそのステータスコードからHTTP応答行を作成します。

なぜcgiccが私にはわからないのですか?それは、その特定のクラスをそのコンテキストで使用することは想定されていない可能性がありますか?そのクラスはnphスクリプトでのみ使用するのでしょうか? The documentationは種類のそれを意味するものではない - 標準応答クラスのセットを説明した後、それは言う:

cgicc :: HTTPResponseHeaderを完全なHTTPレスポンスを構築するために使用される、より強力な、汎用的なHTTPヘッダーのクラスです。

通常のCGIスクリプトではこれを使用することは珍しいことです。

+0

これはそれを説明しています。 CGIを使って、使用したいHTTPバージョン(1.0/1.1)を指定する方法はありますか?今は本当に必要なことではありませんが、好奇心からCGIをよく理解したいと思います。 – Ole

+0

申し訳ありませんが、標準CGIで制御できるかどうかはわかりません。 'nph'スクリプトを使ってプロセス全体を引き継ぐことができます。この場合、好きなことをすることができます。 – RichieHindle

関連する問題