HTTP - Solicitações

Um cliente HTTP envia uma solicitação HTTP a um servidor na forma de uma mensagem de solicitação que inclui o seguinte formato:


     
  • A Request-line
  • Zero or more header (General|Request|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 solicitação HTTP.

Linha de Pedido

O Request-Line começa com um token de método, seguido pelo Request-URI e a versão do protocolo, e termina com CRLF. Os elementos são separados por caracteres de espaço SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Vamos discutir cada uma das partes mencionadas na Linha de Solicitação.

Método de Solicitação

O pedido method indica o método a ser executado no recurso identificado pelo dado Request-URI. O método diferencia maiúsculas de minúsculas e sempre deve ser mencionado em maiúsculas. A tabela a seguir lista todos os métodos suportados em HTTP / 1.1.

SN Método e Descrição
1 GET

O método GET é usado para recuperar informações de um determinado servidor usando um determinado URI. As solicitações que usam GET devem recuperar apenas dados e não devem ter nenhum outro efeito sobre os dados.

2 HEAD

O mesmo que GET, mas transfere apenas a linha de status e a seção de cabeçalho.

3 POST

Uma solicitação POST é usada para enviar dados para o servidor, por exemplo, informações do cliente, upload de arquivo, etc. usando formulários HTML.

4 PUT

Substitui todas as representações atuais do recurso de destino pelo conteúdo carregado.

5 DELETE

Remove todas as representações atuais do recurso de destino fornecidas por URI.

6 CONNECT

Estabelece um túnel para o servidor identificado por um determinado URI.

7 OPTIONS

Descreva as opções de comunicação para o recurso de destino.

8 TRACE

Executa um teste de loopback de mensagem junto com o caminho para o recurso de destino.

Request-URI

O Request-URI é um Uniform Resource Identifier e identifica o recurso sobre o qual aplicar a solicitação. A seguir estão os formulários mais comumente usados ​​para especificar um URI:

Request-URI = "*" | absoluteURI | abs_path | authority
 
SN Método e Descrição
1 O asterisco *é usado quando uma solicitação HTTP não se aplica a um recurso específico, mas ao próprio servidor, e só é permitido quando o método usado não se aplica necessariamente a um recurso. Por exemplo:

OPTIONS * HTTP/1.1

2 o absoluteURIé usado quando uma solicitação HTTP está sendo feita para um proxy. O proxy é solicitado para encaminhar a solicitação ou serviço de um cache válido e retornar a resposta. Por exemplo:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 A forma mais comum de Request-URI é aquela usada para identificar um recurso em um servidor ou gateway de origem. Por exemplo, um cliente que deseja recuperar um recurso diretamente do servidor de origem criaria uma conexão TCP para a porta 80 do host "www.w3.org" e enviaria as seguintes linhas:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

Observe que o caminho absoluto não pode estar vazio; se nenhum estiver presente no URI original, ele DEVE ser fornecido como "/" (a raiz do servidor).

Solicitar campos de cabeçalho

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 solicitação.

Os campos do cabeçalho da solicitação permitem que o cliente passe informações adicionais sobre a solicitação e sobre o próprio cliente para o servidor. Esses campos atuam como modificadores de solicitação. Aqui está uma lista de alguns campos importantes de cabeçalho de solicitação que podem ser usados ​​com base no requisito:

  • Accept-Charset

  • Accept-Encoding

  • Accept-Language

  • Authorization

  • Expect

  • From

  • Host

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Proxy-Authorization

  • Range

  • Referer

  • TE

  • User-Agent

Você pode introduzir seus campos personalizados no caso de escrever seu próprio Cliente e Servidor da Web personalizados.

Exemplos de mensagem de solicitação

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

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Aqui, não estamos enviando nenhum dado de solicitação ao servidor porque estamos obtendo uma página HTML simples do servidor. A conexão é um cabeçalho geral e o restante dos cabeçalhos são cabeçalhos de solicitação. O exemplo a seguir mostra como enviar dados de formulário ao servidor usando o corpo da mensagem de solicitação:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID=string&content=string&/paramsXML=string

Aqui, o URL fornecido /cgi-bin/process.cgi será usado para processar os dados transmitidos e, portanto, uma resposta será retornada. Aquicontent-type diz ao servidor que os dados passados ​​são dados simples de formulário da web e lengthserá o comprimento real dos dados colocados no corpo da mensagem. O exemplo a seguir mostra como você pode passar XML simples para seu servidor da web:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>