500: Erro interno do servidor do programa CGI

2

Eu estou tentando escrever um programa CGI que é chamado a partir de uma página HTML. O trecho de código CGI é o seguinte:

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

Mas depois de executar o script, posso ver a 500:Internal Server Error na página do navegador. .

A seguir pode ser vista no arquivo de log de erros

[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
    
por Zama Ques 09.04.2014 / 09:51

1 resposta

10

Como a especificação HTTP (e a mensagem de erro de seu servidor HTTP) especifica, você precisa de uma linha em branco entre os cabeçalhos HTTP e o corpo, caso contrário, o servidor não sabe onde os cabeçalhos terminam e o corpo começa. De RFC 2616 (ênfase minha):

Request (section 5) and Response (section 6) messages use the generic message format of RFC 822 [9] for transferring entities (the payload of the message). Both types of message consist of a start-line, zero or more header fields (also known as "headers"), an empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields, and possibly a message-body.

Para corrigir o problema, coloque outro echo antes de echo "<html>" , para que os cabeçalhos fiquem claramente separados do corpo.

    
por 09.04.2014 / 10:13