Inciando a arte de fazer sites, como sempre, começamos do começo (piadinha sem graça).

É fato que muitos desenvolvedores web não dão muita importância para o protocolo HTTP, também é fato que saber como funciona o protocolo HTTP é muito importante para ser um bom desenvolvedor. Não entrarei em muitos detalhes sobre o protocolo HTTP, minha idéia é passar somente o básico do protocolo, sugiro que instale a extensão HttpFox para o Firefox, com ela você vai poder dar uma olhadinha bem mais de perto nas requisições e respostas do protocolo.

http www

Introdução ao protocolo HTTP

Como já sabemos HTTP é um protocolo, ele utilizado para transferir dados pela web e por Intranets.
O protocolo HTTP é responsável pela conversa entre o cliente (ex: navegador de internet) e o servidor web, essa conversa é basicamente um conjunto de perguntas e respostas, o cliente pergunta e o servidor responde.

Cliente ou User agent

Os clientes também são chamados de user agent, eles são burros, só sabem fazer perguntas (mais conhecidas como requisições) ao servidor, um cliente pode ser um browser (navegador de internet, ex: firefox, internet explorer), um robô, um programa, um script e por ai vai…

Servidor

Os servidores são muito inteligentes, responde a todas as perguntas feitas pelos clientes, e digo mais, eles responde a milhares e milhares de perguntas ao MESMO TEMPO! Claro, existem aqueles servidores que fugiram da escola e só conseguem responder algumas ou uma pergunta por vez.

O servidor web (ou servidor HTTP) mais utilizado atualmente é o Apache, e por causa disso nossos exemplos serão todos baseados neste no servidor.

A conversa entre cliente e servidor

O que esses dois tanto conversão? Bom, como a conversa deles é baseada em perguntas e respostas ela precisa começar com uma pergunta certo? Ótimo, então vamos dar uma olhadinha em uma requisição (ou pergunta) básica de nosso cliente:

1
2
3
4
GET /index.html HTTP/1.1
Host: fazersites.com.br
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008101315 Ubuntu/8.10 (intrepid) Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Observe a primeira linha, ela contem a palavra “GET” que seria mais ou menos como “pegar” o conteúdo que esta pagina inicial do site, indicado pela “/index.html” logo apos a palavra “GET”. GET é um dos métodos do HTTP/1.1, em um futuro próximo falarei mais sobre os métodos do HTTP 1.1.

Na segunda linha podemos ver o seguinte texto “Host: fazersites.com.br” isso significa que o cliente está perguntando ao servidor o que está na página inicial (/index.html) no site fazersites.com.br entendeu? Simples assim.

A terceira linha diz quem está perguntando ao servidor, o user-agent ou melhor, cliente, diz quem ele é para o servidor, no exemplo acima é o navegador web Firefox versão 3.0.3.

Na quarta linha diz quais recursos o cliente aceita de maneira correta como resposta do servidor.

Bom depois do cliente ter perguntado, vamos dar uma olhada de como seria a resposta do servidor.

1
2
3
4
HTTP/1.x 200 OK
Date: Mon, 03 Nov 2008 20:31:25 GMT
Server: Apache/2.0.61 (Unix) PHP/4.4.7 mod_ssl/2.0.61 OpenSSL/0.9.7e mod_fastcgi/2.4.2 DAV/2 SVN/1.4.2
Content-Type: text/html; charset=UTF-8

Essa é uma resposta básica de um servidor web, na primeira linha o servidor responde que a requisição (a pergunta) foi um sucesso (200 OK), o cliente vai receber a resposta que estava esperando. Farei outro artigo explicando detalhadamente sobre o significado dos códigos das respostas.

Na segunda linha diz a hora exata que o servidor respondeu a pergunta do cliente, na terceira linha o servidor diz quem é, se identifica da mesma forma que o cliente fez, lembra? No exemplo o servidor é Apache versão 2.0.61.

A quarta linha diz qual é tipo do documento que será enviado para o navegador, no exemplo acima indica um arquivo HTML, e na mesma linha diz qual é o charset (codificação) que o arquivo está utilizando, no exemplo é “UTF-8″ um dos mais utilizados na internet atualmente. Em breve farei um artigo explicando com maiores detalhes a codificação de um arquivo.

A resposta do servidor é acompanhada do conteúdo do arquivo ou recurso requisitado pelo cliente, no caso estudado um arquivo HTML.

Existem diversas possibilidades de perguntas e respostas, tentei me focar no básico do protocolo HTTP. Espero que vocês tenham entendido, qualquer duvida faça sua pergunta nos comentários abaixo que tentarei lhe ajudar a compreender.

Abraços e Muito Obrigado.

Fontes:
Introdução ao protocolo HTTP (http://www.obasicodaweb.com/introducao-ao-http)
HTTP (http://pt.wikipedia.org/wiki/HTTP)