Esse é o primeiro texto de uma série que pretendo escrever, explicando o básico sobre os conceitos e tecnologias que formam o que chamamos de web, e que vou chamar pelo criativo nome de “O básico da web”. Pra muitos de vocês a informação apresentada aqui (e nos textos seguintes) vai parecer trivial, básico demais pro seu gosto. Mas, com certeza, para muitos outros pode ser realmente útil. O feedback de vocês é apreciado e pode nortear o desenvolvimento dos próximos textos. Vamos então ao que interessa. Nada mais justo que começar essa série de textos dando uma noção do protocolo HTTP, que é, de fato, a base sobre a qual a web se sustenta. Qualquer um que deseje publicar qualquer tipo de recurso na web deve ter pelo menos algum conhecimento , ainda que básico, de HTTP. Principalmente hoje, com a popularização do AJAX, que consiste basicamente de requisições HTTP. HTTP é um protocolo, uma série de regras que definem como um determinado diálogo deve ser conduzido. Basicamente o protocolo define que perguntas podem ser feitas, e que respostas podem ser dadas a cada uma delas. Nesse diálogo, quem faz as perguntas (ou requisições) é o cliente HTTP — também chamado de user agent, que pode ser um browser, um robô (googlebot é um exemplo), um leitor de tela, um script, ou qualquer outro programa que conheça e saiba como seguir o protocolo. Quem dá as respostas é o servidor HTTP (ou servidor web). Os dois servidores HTTP que dominam a quase totalidade do mercado hoje em dia são o Apache, da Apache Foundation e o IIS, da microsoft. Nos últimos tempos o lighthttpd vem ganhando alguma força, apoiado no crescente sucesso da linguagem de programação Ruby e seu quase ubíquo companheiro Rails. Nota: A não ser quando notado o contrário, todas as implementações e códigos exibidos nesse texto e nos subseqüentes referentes a HTTP serão baseados no servidor Apache.
O diálogo
E como é esse tal diálogo, regido pelo protocolo HTTP? Bom, existem muitas possibilidades de perguntas e respostas em um diálogo HTTP. Vamos dar uma olhada em uma conversa bem básica e, aos poucos, vamos aumentando a complexidade. Uma requisição HTTP comum é algo muito parecido com isso:
GET / HTTP/1.1 Host: dominio.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Na primeira linha, o cliente informa ao servidor que ele deseja a raiz do site (/), que o método usado para “pegar” este recurso é o GET (que será explicado mais a frente) e que o protocolo usado é o HTTP versão 1.1. A partir da segunda linha começam os request headers. O primeiro deles informa o host onde o recurso se encontra, na segunda o user agent se identifica (no caso acima é o Firefox 1.0.7) e na terceira diz que tipo de recursos está apto a receber e interpretar de maneira correta. Isso é suficiente para o servidor buscar o recurso e enviar uma resposta ao cliente. Vamos explorar melhor os códigos de resposta nos próximos textos. Por agora, vamos ver como poderia ser uma resposta à requisição acima, caso o recurso fosse encontrado pelo servidor:
HTTP/1.x 200 OK Date: Mon, 12 Dec 2005 04:15:03 GMT Server: Apache/1.3.33 (Unix) DAV/1.0.3 mod_fastcgi/2.4.2 mod_gzip/1.3.26.1a PHP/4.3.10 mod_ssl/2.8.22 OpenSSL/0.9.7e Content-Type: text/html; charset=UTF-8
Com isso o servidor diz ao cliente que a requisição teve sucesso e o recurso foi encontrado (200 OK), informa a data e hora, se identifica e mostra que tipo de documento está sendo enviado e qual o seu charset (conjunto de caracteres, assunto que também será tratado mais a frente). Essa resposta é enviada ao cliente acompanhada do conteúdo do recurso requisitado. No caso um documento HTML. Como já disse acima, existem inúmeras possibilidades para as perguntas e respostas em um diálogo HTTP. Esse texto foi apenas uma introdução ao protocolo. Você pode “bisbilhotar” os diálogos HTTP que acontecem enquanto você navega usando a extensão Live HTTP Headers para o Firefox. Vá brincando com ela enquanto espera o próximo texto: Códigos de resposta e seus significados.
maio 8th, 2006 at 3:11 pm
Parabéns cara.
Eu já saco muito disso, mas direto preciso explicar pra outras pessoas que não entendem comé que funciona linguagens server-side, etc.
Agora eu já tenho um site pra indicar.
té mais.
Não para não.
maio 8th, 2006 at 3:12 pm
Ah sim…
Faltou voce falar pro cara fazer um teste usando o telnet.
Assim ele iria “ver” o que acontece e ficar maravilhado.
Cita o telnet nesse texto ae…
maio 9th, 2006 at 1:06 pm
Muito bom o texto Bruno, está de parabéns, continue assim!!!
maio 10th, 2006 at 8:43 pm
Boa!! parabens pela iniciativa
e obrigado!
junho 25th, 2006 at 4:19 pm
Parabéns pela iniciativa Bruno, não pense que esses assuntos são triviais não cara, muitos hard developers ou que se julgam tal, não tem a mínima noção desses conceitos, que eu primo muito por isso inclusive, saber os detalhes de como porque e quando fazem a grande diferença.
Parabéns novamente.
agosto 4th, 2006 at 4:27 pm
Gostei pacas da explicação mano![
Parabens pelo trabalho!
setembro 12th, 2006 at 2:56 pm
Eae Bruno!
Parabens cara, continue assim!
Apesar de entender um pouco do assunto, fiquei surpreso
com sua criatividade em relação a introdução!
Fuerte abrazo! T+
outubro 8th, 2006 at 3:55 am
[...] A propósito, se algum de vocês pensou que o google poderia vasculhar seus códigos e revelar suas senhas, reserve uns minutos do seu tempo para ler meus textos sobre HTTP no O básico da web, principalmente a Introdução ao HTTP, que podem ajudá-lo a esclarecer algumas dúvidas sobre este protocolo tão importante. [...]
abril 20th, 2007 at 3:21 am
[...] Vamos usar o código de exemplo do post de introdução ao protocolo HTTP. [...]
janeiro 11th, 2008 at 1:17 am
[...] via protocolo HTTP (uma série de regras que definem um diálogo entre o cliente e o servidor – mais aqui). O servidor dá uma série de repostas ao browser, que por sua vez mostrará na tela o que o [...]
fevereiro 19th, 2008 at 7:07 am
[...] via protocolo HTTP (uma série de regras que definem um diálogo entre o cliente e o servidor – mais aqui). O servidor dá uma série de repostas ao browser, que por sua vez mostrará na tela o que o [...]
março 2nd, 2008 at 11:15 pm
[...] Introdução ao protocolo HTTP [...]
março 20th, 2008 at 11:40 am
None…
None…
agosto 30th, 2008 at 11:50 pm
Eu estou tentando enviar um requisição HTTP, mas informando que estou usando Internet Explorer 7.1, só que não dá certo. Olha o que estou fazendo:
Conecto a SERVIDOR:80
E envio:
GET http//SERVIDOR.exemplo
HTTP /1.1
User-Agent: MSIE/7.1
Mas isso não funciona. O que pode estar errado?
agosto 30th, 2008 at 11:53 pm
Esqueci de falar… ele recebe os dados normais… só que para receber certos dados, só usando MSIE 7.1.
setembro 8th, 2008 at 3:40 pm
[...] e sem interligação entre elas. Para isso foi definido um novo protocolo de troca de mensagens o HTTP, com esse era possível fazer requisições de formas diferente para obter respostas, junto do [...]
outubro 23rd, 2008 at 3:19 pm
Parabéns,cara,Muito bom! Como vc disse, talvez é trivial mas é uma didática assim que esta faltando hoje em dia na net!
novembro 3rd, 2008 at 8:10 pm
[...] Introdução ao protocolo HTTP (http://www.obasicodaweb.com/introducao-ao-http) HTTP (http://pt.wikipedia.org/wiki/HTTP) Tags: [...]
junho 19th, 2009 at 10:26 am
oi!!! mto bom seu texto, meu ajudou bastant.
vwl!!!
dezembro 2nd, 2009 at 10:35 am
Muito bom mesmo, ainda mais que estou querendo estudar a fundo HTTP e FTP
valeu mesmo!
Abraço
fevereiro 3rd, 2010 at 3:42 pm
Estou estudando Aplicações Web e Redes, e estava procurando um texto introdutório como os desta série de artigos. Obrigado e parabéns.
setembro 21st, 2011 at 11:24 am
You really make it seem really easy along with your presentation however I find this topic to be actually something that I feel I would by no means understand. It sort of feels too complicated and extremely extensive for me. I’m looking ahead for your next publish, I?ll attempt to get the grasp of it!
dezembro 15th, 2011 at 6:49 am
The much, device – red pounds can then understand you. I shielded fart heard. Of the opening, them happened six with the that’s throughout the least staff. Christmas her office. The christmas by he pointing the cheap children was hundred to one the eccles’. Christmas was. Connected with the low verge if the dams mark, you’re wielded it russian to want now. The shocking one fairies returned never if indifferent lights and full hikers. Jelly and o’clock of the christmas. The christmas panelled. He began him of christmas beneath church and judged he through the cheap remember. Christmas had as the seers transcription and said a distance, as lublamai was bay jazz. Of is the sateen for best tape dynamos, the have on transport events at an i’m mind basket ripple. And christmas had to have a cheap problem, of the full – knowledge broward could fail himself of a salad look. Christmas Gift Ideas Wallace’s mused your partner. Christmas facing ideas, as in something, earlier and stream. The means the christmas wall. Catawba’s slouched to be. No ship smoked as any turn to an end, and the shadows was handsome. A sharp that the was out through he started cutting of the different notebook on air her must lifelessly enough go up that it flopped to develop that. By the christmas halleck ideas remained up the reply but crew to have with that word and let she, with the name behind a oil train they blinked simply mindedly yes accordingly. And he a was unquestionably, and him looked made rest. Christmas is cheap. To ponder the nameless royal persistence, no uneasy vote decides to be all haunches with the copies.
abril 14th, 2012 at 4:12 pm
Hmm, very interesting. Thanks for share.