6

私は CGI スクリプトとして機能する C++ プログラムを持っており、現在 Cgicc を使用して解析と書式設定の一部を行っています (ただし、いつか置き換えられる可能性があります)。応答を作成するとき、cgicc::HttpResponseHeader次のようなものを作成するを使用します

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

これは私にはかなり標準的に見えます。ただし、Webサーバーはそれで窒息し、私に

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

これを修正する方法を見つけました:

  1. HTTP/...線を取り除く
  2. 代わりに行を追加Status: 302 Found

実際、それはまさにその通りですcgicc::HttpRedirectHeader。2 つの質問があります。

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

これを回避する方法を探しているわけではないことに注意してください。その方法は知っています。何が起こっているのか理解したいだけです。

乾杯オーレ

4

1 に答える 1

7

このHTTP行は標準の HTTP ですが、標準の CGI ではありません。

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

私が知らない行をcgicc作成しているのはなぜですか- そのコンテキストでその特定のクラスを使用することになっていない可能性はありますか? HTTPおそらく、そのクラスはnphスクリプトでのみ使用するためのものでしょうか? ドキュメントは、標準の応答クラスのセットを説明した後、次のように述べています。

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

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

于 2012-06-27T09:37:35.627 に答える