HTTP - Respostas

Depois de receber e interpretar uma mensagem de solicitação, um servidor responde com uma mensagem de resposta HTTP:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

As seções a seguir explicam cada uma das entidades usadas em uma mensagem de resposta HTTP.

Linha de status da mensagem

Uma linha de status consiste na versão do protocolo seguida por um código de status numérico e sua frase textual associada. Os elementos são separados por caracteres de espaço SP.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Versão HTTP

Um servidor compatível com HTTP versão 1.1 retornará as seguintes informações de versão:

HTTP-Version = HTTP/1.1

Código de Status

O elemento Status-Code é um número inteiro de 3 dígitos onde o primeiro dígito do Status-Code define a classe de resposta e os dois últimos dígitos não têm qualquer função de categorização. Existem 5 valores para o primeiro dígito:

SN Código e Descrição
1 1xx: Informational

Isso significa que a solicitação foi recebida e o processo continua.

2 2xx: Success

Significa que a ação foi recebida, compreendida e aceita com sucesso.

3 3xx: Redirection

Isso significa que outras ações devem ser tomadas para concluir a solicitação.

4 4xx: Client Error

Isso significa que a solicitação contém sintaxe incorreta ou não pode ser atendida.

5 5xx: Server Error

Isso significa que o servidor falhou em atender a uma solicitação aparentemente válida.

Os códigos de status HTTP são extensíveis e os aplicativos HTTP não são necessários para compreender o significado de todos os códigos de status registrados. Uma lista de todos os códigos de status foi fornecida em um capítulo separado para sua referência.

Campos de cabeçalho de resposta

Estudaremos o cabeçalho geral e o cabeçalho de entidade em um capítulo separado, quando aprenderemos os campos de cabeçalho HTTP. Por enquanto, vamos verificar o que são os campos de cabeçalho de resposta.

Os campos de cabeçalho de resposta permitem que o servidor passe informações adicionais sobre a resposta que não podem ser colocadas na linha de status. Esses campos de cabeçalho fornecem informações sobre o servidor e sobre o acesso posterior ao recurso identificado pelo Request-URI.

  • Accept-Ranges

  • Age

  • ETag

  • Location

  • Proxy-Authenticate

  • Retry-After

  • Server

  • Vary

  • WWW-Authenticate

Você pode introduzir seus campos personalizados no caso de escrever seu próprio cliente e servidor Web personalizados.

Exemplos de mensagem de resposta

Agora, vamos juntar tudo para formar uma resposta HTTP para uma solicitação para buscar o hello.htm página do servidor da web em execução em tutorialspoint.com

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

O exemplo a seguir mostra uma mensagem de resposta HTTP exibindo uma condição de erro quando o servidor da web não conseguiu encontrar a página solicitada:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

A seguir está um exemplo de mensagem de resposta HTTP mostrando uma condição de erro quando o servidor da web encontrou uma versão HTTP errada na solicitação HTTP fornecida:

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.</p>
   <p>The request line contained invalid characters following the protocol string.</p>
</body>
</html>