CGI Error: タイトルタグの完全なセットを返さないというエラー

このQ&Aのポイント
  • Windows 2000 Professional上でIIS5.0を使用してCGIを作成していますが、CGI Errorが発生しています。
  • ブラウザには「CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:」と表示されます。
  • 以前の同様の質問への回答で「CGIの最初の出力に「Content-Type: text/html」と「1行の空白行」が必要」とありますが、これは実装されています。
回答を見る
  • ベストアンサー

CGI Error

以前に同様の質問があったのですが、解決はされていなかったため再度質問させてください。 Windows 2000 Professional(service pack4)上でIIS5.0を使い実行ファイルを呼び出してCGIを作成しているのですが、 「CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: 」 (are:の以下には何も無い) とブラウザに表示されて動きません。 Default.htmのあるフォルダにjava scriptファイルがあり、その中で別フォルダにある実行ファイルを呼び出しております。 実行ファイルのあるディレクトリは読み取り、ASP等のスクリプトを実行する、ISAPIアプリケーションCGI等を実行するにのみチェックをいれ仮想ディレクトリ作成ウィザードで作成しました。 実行ファイルのあるディレクトリ以外のディレクトリは読み取りのみチェックで同様に作成しました。 ファイル名などに間違いはありません。 以前の同様の質問をされた方への回答で 「CGIの最初の出力に「Content-Type: text/html」と「1行の空白行」が必要」とありましたが、 これについては入っていました。 また、今回CGIエラーとなるシステムは、 以前別の環境で動作していたものを今回引継ぎ、新しい端末にて同様に設定しただけで、今回新たにソース変更を行っていません。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • suzui
  • ベストアンサー率67% (199/297)
回答No.5

CGIプログラムだったんですね。 アプリケーションマッピングは不要です。 仮想ディレクトリに実行アクセス許可と、 実ディレクトリのNTFSアクセス許可を設定してください。 もういちどこちら http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/ja-jp/Default.asp?url=/resources/documentation/windowsserv/2003/standard/proddocs/ja-jp/ca_configcgi.asp をよく読んでください。 マッピングが必要なのはcgiスクリプトの場合です。 NTFSアクセス許可は、プログラムを実行するすべてのユーザーに、ディレクトリに対する実行アクセス許可を与える必要があります。匿名ユーザーを受け付ける Web サイトでは、匿名ユーザー (IUSR_<コンピュータ名> アカウント) に、実行アクセス許可を与えます。 なお、IISを動作させているサーバにIIS Lockdown Wizard 2.1 ツールやURLScanをインストールしている場合、拡張子.exeのcgiが動作しないように設定が変えられている場合があります。 その場合は、それらをuninstallしてください。 IIS Lockdownツールを無効にする方法はこちらです。

参考URL:
http://www.microsoft.com/japan/technet/security/tools/locktool.asp
kuntyan
質問者

お礼

長い間ご丁寧に回答いただきましてありがとうございました。 おかげさまでCGIプログラムが処理結果を返してログも出力されました。 IISのローカルフォルダのプロパティ-ディレクトリ セキュリティ-匿名アクセスおよび認証コントロールの編集にて 匿名アクセスにチェックし、(IUSR_<コンピュータ名> アカウントをパスと設定しました。 IISによるパスワードの管理を許可するにはチェックをいれずにテストしました。 残念ながらテスト環境の不備で正常結果は返ってきませんでしたが、ログも出ており山は越えたようです。 suzui様にはなんとお礼をしたらよいか・・・ 理解の悪い私に対して、親切に回答いただきまして、本当にありがとうございました。 私もいつかsuzui様のように回答できるようにがんばります。 大変お世話になりました。

その他の回答 (4)

  • hisappy
  • ベストアンサー率46% (184/392)
回答No.4

細かく推測していないので申し訳ないのですが、 エラーメッセージの内容と、質問文、補足文の感じから推測するに   FTP(もしくはそれと同等の処理)の際のエラー が考えられます。 ひとまずは推測理由を述べます。エラーメッセージは   「CGIが生成したヘッダが奇麗な形式でない。」(推定) と言っています。 このことから   ・環境移行の際に適切な形式でファイルの移動が行われなかった。   ・ヘッダに関してインクルードされているファイルの中身が不正である。 ということが考えられ、まずはこの点に捜索範囲を狭めることができます。 ここでカギとなるのが、質問文にあります   「CGIの最初の出力に『Content-Type: text/html』と『1行の空白行』が必要」   とありましたが、これについては入っていました。 の記述です。 エラー内容と、この記載内容の具合から   FTP(もしくはそれと同等の処理)の際にバイナリ形式で格納すべきところを   テキスト形式(もしくはそれに準じた形式)で格納してしまった。   そのためHTTPヘッダの情報を格納しているファイルの中身が改ざんされてしまい   結果、CGIがキックされた時に生成されるヘッダの終端が不正な形式となった。 と推測できるしだいであります。 ちなみにjava scriptはクライアントサイドで実行され、サーバ上で実行されることはありません。 また呼出元のファイルもURLがhttp://で読み出されていないと、 呼び出されるCGIが正しく動作しない場合があります。 ご確認と続報、よろしくお願いします。

kuntyan
質問者

補足

ご回答ありがとうございます。 現在アクセス権、マッピングを中心に確認しております。 ご指摘の点はテキスト出力ではなく、たとえばバイナリ形式では?ということと思われますが、 以前の動作していた環境より変更を行っていない部分であるため、出力形式のミスではないようです。 ご意見、ご回答ありがとうございます。

  • suzui
  • ベストアンサー率67% (199/297)
回答No.3

>cgiで使用の言語はJavaScriptです。 >JavaScriptにてc++で作成の実行ファイルを呼び出し、 >処理結果をJavaScriptで出力しております。 と書いてあったので、CGIがスクリプト(言語はJavascript)で書かれているのかと思いましたが、実行ファイル(.exe)なんでしょうか? CGIというのはサーバ側で実行されるスクリプトもしくはプログラムなんですが、どちらでしょうか。 調べるときに混同しないでいただきたいのは、スクリプトが実行されるのがクライアント側かサーバ側かということです。意味がまったく異なるので・・・ 少なくともクライアント側またはサーバ側のどちらかでJavascriptをお使いのようなので、クライアントから呼び出しているURLを調べてください。どんなURLですか? CGIスクリプトの場合の例: http://example.com/sample.cgi?param1=value1 http://example.com/sample.js?param1=value1 CGIプログラムの場合の例: http://example.com/sample.exe?param1=value1 どちらの場合でも、IISの設定の仕方はこちらをよく読んで下さい。 http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/ja-jp/Default.asp?url=/resources/documentation/windowsserv/2003/standard/proddocs/ja-jp/ca_configcgi.asp CGIスクリプトの場合はアプリケーションのマッピングが必要になります。スクリプトでJavascriptやVBscriptを言語として利用している場合は、場合によってはこちらの作業が必要になる場合もあります。 http://support.microsoft.com/default.aspx?scid=kb;ja;261205 CGIプログラムの場合は、プログラムを格納している仮想ディレクトリに(IIS上で)実行アクセス許可が必要です。質問内容を見る限りウィザードで正しく作成されているようですが、確認してください。また、当該ディレクトリのNTFSアクセス権についても確認してください。

kuntyan
質問者

補足

返信が遅くなり申し訳ありません。 私の理解の浅さと説明不足で混乱を招きすみません。 クライアント側より呼び出しのURLはWEBサーバのマシン名でhttp://マシン名/と入力すると Default.htmが表示されます。 当システムはWEB上で検索条件を入力し検索ボタンを押下することによりサーバ上のデータベースを検索し 結果を返すシステムとなっております。 HTMLでは <!--検索ボタン--> <!--<image src="/images/kensaku.gif" OnClick ="execute()"> --> <a href="JavaScript:execute()"><image src="/images/kensaku.gif" border="0"></a> </td> <td width=34% align=right> となっております。 そして検索のJavascriptファイルがFind.jsという名前であり、その中で(一部抜粋) function ExecCGI() { var form = top.upper_frm.document.menu_form; var field_chk = fieldChk(form); top.upper_frm.document.send_form.sql.value = "all"; var cgi_name = "/cgi-bin/FindList.exe"; top.upper_frm.document.send_form.action = cgi_name; top.upper_frm.document.send_form.submit(); return; } と実行ファイル(.exe)を呼び出しております。 サーバにて実行ファイルを実行し検索結果としてHTMLを作成し表示しております。 ご指摘いただきましたIISの設定、マッピング、NTFSアクセス権について確認いたしました。 マッピングを拡張子exeを追加し、パスと動詞はaspと同様にしたところ CGIエラーのメッセージが出ずに、検索中に表示するよう指定されている「検索中」メッセージが表示されます。 ただし、いつまでたっても結果は表示されず、実行ファイルが起動すると出力されるログも出力されません。 ローカルパスとなっているパスのNTFSアクセス権を確認したところ規定のWEBサイトで、このフォルダを共有しないとなっていたため、 このフォルダを共有するにチェックしエイリアスは同じ名前だと入力できないため別名にて確定しました。 しかし、結果に変化はありませんでした。 これほどわかりやすく回答いただきましてありがとうございます。 また、私が及ばずいまだ解決せずに申し訳ありません。 もう少しお付き合いいただければ幸いです。

  • suzui
  • ベストアンサー率67% (199/297)
回答No.2

cgiのファイル名の拡張子は何ですか? その拡張子に対して、IISでアプリケーションのマッピングはどのようになっていますか? 確認の方法: http://www.microsoft.com/windows2000/ja/advanced/iis/default.asp?url=/windows2000/ja/advanced/iis/htm/core/iiwarndf.htm cgiファイルの先頭の1行目の内容は何ですか? 差し支えなければ教えてください。とりあえずこれだけあれば追試できるかな・・・

kuntyan
質問者

補足

お忙しい中たびたび回答ありがとうございます。 はじめのJavaScriptにて呼び出しの実行ファイル名の拡張子はexeです。 ご指摘の確認方法にてマッピングの確認をいたしましたが、exe拡張子はありませんでした。 cgiファイルの先頭1行目の内容というのは どのように確認すればよいのでしょうか? また、マッピングを行おうと思ったのですが、 すでに追加されているマッピングは実行ファイルのパスが dllとなっているものばかりですが、 私の場合、exeのパスを指定して拡張子はexeでよいのでしょうか? 丁寧な回答をいただいていながら ご期待に沿えずに申し訳ありません。 よろしくお願いします。

  • suzui
  • ベストアンサー率67% (199/297)
回答No.1

以前別の環境で動作していたとありますが、以前の環境は何ですか? それからcgiで使っているスクリプト言語は何ですか? サーバ上でcgiを素で実行してエラーは出ますか?

kuntyan
質問者

補足

返信が遅くなってしまいすみません。 以前の環境については詳細はわからないのですが、 どうも同じ Windows 2000 Professionalといわれております。 service packについては不明です。 cgiで使用の言語はJavaScriptです。 JavaScriptにてc++で作成の実行ファイルを呼び出し、 処理結果をJavaScriptで出力しております。 サーバ上で本来はJavaScriptで呼び出す実行ファイルを 素で実行すると引数がないためエラーとなりますが、 その場合ログが出力され、起動が確認できます。 しかし、JavaScriptにて引数を渡して呼び出すとログも出力されません。 お忙しいところ申し訳ありませんが よろしくお願いします。

関連するQ&A

  • CGI ErrorでCGIが動かない。。

    Windows2000上で、IISでCGIを動かそうとしているのですが、 「CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: 」 (are:の以下には何も無い) とブラウザに表示されて動きません。何が考えられますか? 実行権限も与えているし、ファイル名を間違ってもいないのですが・・・

    • 締切済み
    • CGI
  • CGIエラー

    ホームページにCGIを設定したら下記エラーが発生したのですが、どこの行がエラーになったかが表示されません… もしわかりましたら教えて下さい。 CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers.

    • ベストアンサー
    • CGI
  • CGIのエラー

    やっとIISにPerlを組み込むことができたのですがエラーが出て先に進めません cgiを実行すると CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. と表示されます 何が何だかさっぱりわかりません ご指導願います

  • たびたび表示される”CGI Error”

    フリーのCGIや、PHPをレンタルサーバで動かしているんですが、 以前は問題なかったのに、最近下記のエラーメッセージが頻繁に出る用になりました。 --------------------- CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: --------------------- しかも、再読み込みをしなおせば、CGIもPHPも動作しています。 これはプログラム側の問題でしょうか? それともサーバ側の問題でしょうか? ご存知の方、教えてください~~。

    • 締切済み
    • CGI
  • CGIエラー

    アクセス解析のCGIを設置しようとしてるのですが、動作確認の際に、以下のエラーが出ます。 The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: Can't locate config.pl in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at C:\daishin_www\cgi-bin\access\accview.cgi line 83. CGIを設置するのはこれが初めてなので、このエラー文が何を言いたいのか、どこを直せば動くようになるのか、ぜんぜんわからずに困っています。 どなたか教えて頂けませんか? サーバーは自社サーバーでWindowsです。

    • ベストアンサー
    • CGI
  • CGIエラー

    CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. というエラー表示がデスクトップに出てきたまま消えなくなりました。再起動してもだめです。 グループウェアの掲示板に貼り付けてあったWebページを見ようとしたところ、開けなかったうえこういったエラーが出てしまいました。 どなたかお願いします。

    • ベストアンサー
    • CGI
  • CGIエラー

    CGIビギナーです。 イントラネットで使用しているパソコンをWEBサーバーとして掲示板を設置したいとおもっていますが、CGIエラーがでます。 CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: Can't locate ./jcode.pl at c:\inetpub\wwwroot\AAA\BBB\CCC\DDD.cgi line 34. CGI自体は以下のCGIファイルで試したところ、 ちゃんとIEで表示されました。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<H2>Hello!</H2>\n"; print "</BODY></HTML>\n"; exit; なので、CGIとしては動作できる環境になっているとおもっていて、ソースの間違いだろうなぐらいしか分かりません。 (ビギナーが)間違えそうなところをご指摘お願いします。 OS WINDOWS2000 PRO IIS5.0

    • 締切済み
    • CGI
  • PHPの動作確認の際にエラー表示されます。

    PHPの動作確認の際にエラー表示されます。 OS XP PHP ver5.2.0 上記環境でサイトを作成しているのですが下記エラーメッセージが表示されてしまい どこを見たらいいのか分からない状態です。 The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are 上記メッセージのみ表示されています。 他のサイトを見ると何行目がおかしいか表示されているみたいなのですが・・・ どこを直したらいいのか教えていただけますでしょうか。

    • 締切済み
    • PHP
  • CGIに関して

    CGIに関してなのですが、CGI実行ディレクトリ名binーcgiにすると言う点で困っています。今、掲示板をHPにアップしようとしているのですが、掲示板設置のマニュアルでは以下の通りとなっています。とりあえず、以下の作成が全然全く分からなくって困っています。分かる方がおられましたら是非ご回答下さいますようお願いいたします。 ホームディレクトリ(ここではpublic_htmlディレクトリとします) の下に、cgi-binディレクトリ(フォルダ)を作成し、必要なファイルををFTP 転送します。全体のディレクトリ構成とファイル位置は以下のとおりです。 public_html / index.html (トップページ) | +-- cgi-bin / ????.cgi ????.log jcode.pl 背景画像など ※ちなみに、ディレクトリ実行はbin-cgiとあります。

  • Windows2003サーバーでのexeのCGI

    Windows2003サーバー(正確にはSmallBusinessServer)のIISにて、C++で作成されて、exeになったCGIを動作させると、「CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers」 というエラーが発生し、なにをどう設定しても直りませんでした。 当のexeファイルは、Windows2000ServerやXPのIISでは正常に動作しております。 多分アクセス権や、実行許可などの設定の問題と思い、いろいろとやってみたのですが、うまくいきませんでした。 やり方をご存じの方は、なにとぞご教授お願いします。