web-dev-qa-db-ja.com

500:CGIプログラムからの内部サーバーエラー

HTMLページから呼び出されるCGIプログラムを作成しようとしています。 CGIコードスニペットは次のとおりです。

 #!/bin/bash
 echo "Content-type: text/html"
 echo  "<html>"
 echo "<body>"
 echo "Hi"
 echo "</body>"
 echo "</html>"

しかし、スクリプトを実行した後、500:Internal Server Errorブラウザーページ。 。

以下はエラーログファイルで見ることができます

[Wed Apr 09 18:36:59 2014] [error] [client 127.0.0.1] malformed header   
from script. Bad header=<html>: image.sh
[Wed Apr 09 18:37:14 2014] [error] [client 127.0.0.1] malformed header 
from script. Bad header=<html>: image.sh
2
Zama Ques

HTTP仕様(およびHTTPサーバーからのエラーメッセージ)で指定されているように、HTTPヘッダーと本文の間に1行の空白行が必要です。から RFC 2616 (私自身を強調):

要求(セクション5)および応答(セクション6)メッセージは、エンティティ(メッセージのペイロード)を転送するためにRFC 822 [9]の一般的なメッセージ形式を使用します。どちらのタイプのメッセージも、開始行0個以上のヘッダーフィールド(「ヘッダー」とも呼ばれます)、空の行(つまり、CRLFの前に何もない行)で構成されます。ヘッダーフィールドの終わり、場合によってはメッセージ本文

この問題を解決するには、echo "<html>"の前に別のechoを置き、ヘッダーが本文から明確に分離されるようにします。

12
Chris Down