500: CGI 프로그램 내부 서버 오류

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

답변1

HTTP 사양(및 HTTP 서버의 오류 메시지)에 지정된 대로 HTTP 헤더와 본문 사이에 빈 줄이 있어야 합니다. 그렇지 않으면 서버는 헤더가 끝나고 본문이 시작되는 위치를 알 수 없습니다. ~에서RFC 2616(강조):

요청(섹션 5) 및 응답(섹션 6) 메시지는 RFC 822[9]의 공통 메시지 형식을 사용하여 엔터티(메시지의 페이로드)를 전송합니다. 두 가지 유형의 메시지 모두 출발선을 포함합니다.0개 이상의 헤더 필드("헤더"라고도 함), 헤더 필드의 끝을 나타내는 빈 줄(즉, CRLF 앞에 아무것도 없는 줄) 및 메시지 본문(가능한 경우).

이 문제를 해결하려면 머리글이 본문 텍스트와 명확하게 구분되도록 echo앞에 다른 것을 배치하십시오 .echo "<html>"

관련 정보