You are on page 1of 8

14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira

Go to English Blog

05 de Maio de 2007

Entendendo um pouco
mais sobre o
protocoloHTTP
Leia em 4 minutos

Uma coisa que percebi que nem todo mundo


que trabalha com desenvolvimento web sabe
como funciona o protocolo HTTP. Eu no sou
nenhum expert no assunto, mas dei uma lida na
especicao h uns 4 anos atrs.

Agora, com toda esta histria de REST, no tem como escapar.


Se voc no souber o mnimo sobre o protocolo, vai trabalhar no
escuro, sem saber ao certo o que est fazendo. Aqui, voc ver
um resumo da especicao. Divirta-se!

Sobre o HTTP
Hypertext Transfer Protocol (HTTP) o mtodo utilizado para
enviar e receber informaes na web. A verso mais utilizada
atualmente a 1.1, denida pela especicao RFC 2616.
Embora esta especicao devesse ser leitura obrigatria para
https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 1/8
14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira

todo desenvolvedor web, muitos nem sabem como ela se parece.


Tal desconhecimento cou bastante claro quando, na poca do
lanamento do Google Web Accelerator (GWA), muitas
informaes comearam a ser excludas. O GWA tem um
princpio muito simples: ele acessa cada um dos links de uma
determinado endereo sem se preocupar e como iria saber?
com as consequncias de tal acesso para fazer cache das
informaes e, ento, exib-las de um arquivo local quando
forem solicitadas. Perda de informaes como esta poderia ter
sido evitada se a especicao HTTP fosse seguida da maneira
como foi originalmente projetada.

O protocolo HTTP baseado em requisies e respostas entre


clientes e servidores. O cliente navegador ou dispositivo que
far a requisio; tambm conhecido como user agent
solicita um determinado recurso (resource), enviando um pacote
de informaes contendo alguns cabealhos (headers) a um URI
ou, mais especicamente, URL. O servidor recebe estas
informaes e envia uma resposta, que pode ser um recurso ou
um simplesmente um outro cabealho.

Se voc utilizar um programa para visualizar os cabealhos de


uma requisio conhecidos como sniffers na URL
http://spesa.com.br, poder ver algo semelhante a isto.

GET/HTTP/1.1
Host:spesa.com.br
UserAgent:Mozilla/5.0(X11;U;Linuxi686;enUS)Gecko/20061201Firefox/2.0.0.
Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain
AcceptLanguage:enus,en;q=0.5
AcceptEncoding:gzip,deate
AcceptCharset:ISO88591,utf8;q=0.7,*;q=0.7
KeepAlive:300
Connection:keepalive

https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 2/8
14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira

Segundo este cabealho, estamos enviando algumas


informaes que identicam nosso cliente no caminho (path) /
e, o mais importante, qual o mtodo da requisio. O servidor,
por sua vez, identica os cabealhos que lhe so convenientes e
envia uma resposta. Neste exemplo, recebemos os cabealhos de
resposta, alm de todo o contedo HTML da pgina inicial do
Spesa.

HTTP/1.x200OK
Date:Fri,04May200716:05:43GMT
Server:Apache/2.0.59(Unix)mod_ssl/2.0.59OpenSSL/0.9.7aDAV/2PHP/4.4.4mod_bw
CacheControl:nocache
KeepAlive:timeout=3,max=100
Connection:KeepAlive
TransferEncoding:chunked
ContentType:text/html;charset=iso88591

Nos cabealhos de resposta, voc pode obter algumas


informaes muito importantes, dentre elas o cdigo de
resposta (Status). Este cdigo identica se uma requisio foi
concluda com sucesso (200) ou se ela no existe (404), por
exemplo, mas existem muitos outros.

O protocolo HTTP stateless, ou seja, ele no capaz por si s


de reter informaes entre requisies diferentes. Para persistir
informaes voc precisa utilizar cookies, sesses, campos de
formulrio ou variveis na prpria URL.

Mtodos HTTP
Quando voc vai fazer uma requisio, preciso que voc
especique qual o mtodo ser utilizado. Os mtodos HTTP,

https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 3/8
14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira

tambm conhecidos como verbos, identicam qual a ao que


deve ser executada em um determinado recurso. Existem 8
mtodos HTTP, mas apenas 5 so mais utilizados.

GET
Solicita a representao de um determinado recurso.
denido como um mtodo seguro e no deve ser usado
para disparar uma ao (remover um usurio, por exemplo).
POST
As informaes enviadas no corpo (body) da requisio so
utilizadas para criar um novo recurso. Tambm
responsvel por fazer processamentos que no so
diretamente relacionados a um recurso.
DELETE
Remove um recurso. Deve retornar o status 204 caso no
exista nenhum recurso para a URI especicada.
PUT
Atualiza um recurso na URI especicada. Caso o recurso no
exista, ele pode criar um. A principal diferentea entre
POST e PUT que o primeiro pode lidar no somente com
recursos, mas pode fazer processamento de informaes,
por exemplo.
HEAD
Retorna informaes sobre um recurso. Na prtica, funciona
semelhante ao mtodo GET, mas sem retornar o recurso no
corpo da requisio. Tambm considerado um mtodo
seguro.

Os outros mtodos disponveis so OPTIONS, TRACE e


CONNECT. Em teoria, os servidores devem implementar os
mtodos GET e HEAD e, sempre que possvel, o mtodo
OPTIONS.

https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 4/8
14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira

Status
Toda requisio recebe um cdigo de resposta conhecido como
status. Com o status possvel saber se uma operao foi
realizada com sucesso (200), se ele foi movida e agora existe em
outro lugar (301) ou se no existe mais (404).

Existem muitos status divididos em diversas categorias. Na


especicao voc pode ver cada um deles com uma descrio
bastante detalhada. Abaixo, mostro alguns cdigos que so mais
frequentes.

200 OK
A requisio foi bem sucedida.
301 Moved Permanently
O recurso foi movido permanentemente para outra URI.
302 Found
O recurso foi movido temporariamente para outra URI.
304 Not Modied
O recurso no foi alterado.
401 Unauthorized
A URI especicada exige autenticao do cliente. O cliente
pode tentar fazer novas requisies.
403 Forbidden
O servidor entende a requisio, mas se recusa em atend-
la. O cliente no deve tentar fazer uma nova requisio.
404 Not Found
O servidor no encontrou nenhuma URI correspondente.
405 Method Not Allowed
O mtodo especicado na requisio no vlido na URI. A
resposta deve incluir um cabealho Allow com uma lista dos
mtodos aceitos.
410 Gone
O recurso solicitado est indisponvel mas seu endereo
atual no conhecido.
https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 5/8
14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira

500 Internal Server Error


O servidor no foi capaz de concluir a requisio devido a
um erro inesperado.
502 Bad Gateway
O servidor, enquanto agindo como proxy ou gateway,
recebeu uma resposta invlida do servidor upstream a que
fez uma requisio.
503 Service Unavailable
O servidor no capaz de processar a requisio pois est
temporariamente indisponvel.

E para finalizar...
D uma lida na especicao HTTP. Existem muitas informaes
que no foram colocadas aqui, mas que so importantes. S
assim voc ser capaz de entender melhor alguns problemas
relacionados ao seu trabalho.

Compartilhe:

7Comentrios NandoVieira
1 Entrar

Recomendar 5 Compartilhar OrdenarporMaisantigos

Participedadiscusso...

AdrianoBonat10anosatrs
UmHTTPstatuscodequeuso,masquenovejousarem,o409(Conflict).
Exemplo:oDiggpoderiaretornarestestatusparareportarqueousurioj
votouemumanotcia,atualmenteeleretornaum200(Ok).
4 Responder Compartilhar

MarcusSilva10anosatrs
Boapedida!Gosteibastante,juntamentecomumoutropostnoblogdo
https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 6/8
14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira
Boapedida!Gosteibastante,juntamentecomumoutropostnoblogdo
HenriqueCostasobre(CharsetseEncodings)dumaexplicitadalegalnos
conceitosfaladospelagrandemaioriadaspessoassomentedabocaprafora.
Responder Compartilhar

jean10anosatrs
Muitolegalotexto,apenasgostariadesabercomoimplementarometodo
HTTPDELETE.Chegueiaprocurarnainternetalgumacoisamasno
encontrei

Gratoeparabns
Responder Compartilhar

NandoVieira autor 10anosatrs

OlJean.VocdeveenviarnarequisioomtodoDELETE.NoPHP,por
exemplo,vocpodefazerissocomcURL[1],usandoafunocurl_setopt[2]
comoparmetroCURLOPT_CUSTOMREQUEST.Napginaquevocfaro
processamento,bastaverificarqualomtodosolicitadocom
$_SERVER['REQUEST_METHOD'].

SevocnoforusarPHP,bastaprocuraroequivalentenalinguagemque
vocusa.

[1]http://php.net/curl
[2]http://php.net/curl_setopt
Responder Compartilhar

MarcosCabral3anosatrs
Muitograto,estoumepreparandoparaumaprovaemeajudoubastante!!!
Responder Compartilhar

ryanumanoatrs
Gosteidapiada!
Responder Compartilhar

AdnoCarvalho21diasatrs
Comopoderiaserfeitoemcodigo,pararealizarumabuscadedadosnomysql
eretornarseeleexisteounao?
Responder Compartilhar

Textos escritos por Nando Vieira exceto quando


informado e com algumas restries de uso. Aqui est o
RSS.

https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 7/8
14/02/2017 EntendendoumpoucomaissobreoprotocoloHTTPNandoVieira

https://nandovieira.com.br/entendendoumpoucomaissobreoprotocolohttp 8/8

You might also like