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>