Protocolo
Como nos comunicamos?
Como entender o que está sendo comunicado?
asdlkj)(*KJH*&HGF%&ḦGhgf
?
ambos precisam usar o mesmo tipo de comunicação
Olá!
Tudo bem?
Estou bem
Obrigado!
http
Hypertext Transfer Protocol
Um protocolo de comunicação utilizado para sistemas de informação de hipermídia, distribuídos e colaborativos. Ele é a base para a comunicação de dados da World Wide Web.
Fonte: Wikipedia
Um protocolo de comunicação por hipertexto usando arquitetura cliente/servidor
Hipertexto é um texto que agrega outras informações como outros textos, imagens, etc.
Usado para comunicação entre navegadores e servidores
No caso da web ele é representado por um hiperlink.
toda comunicação no http é por meio de mensagens
Quero a página
do Google
cliente envia a mensagem
Entendi.
Tome a página
Servidor recebe a mensagem e responde
Requisição é o que o cliente envia para o servidor
Resposta é o que o servidor envia ao cliente
http
é stateless
Quando faz uma requisição
você solicita um recurso
URI
universal resource identifier
Não é URL que você quis dizer?
Não é URL que você quis dizer?
Não, é URI mesmo?
URI = URL + URN
URL = Universal Resource Locator
URN = Universal Resource Name
http
estrutura das mensagens
Requisição
resposta
headers
informacoes da mensagem
acessando o google
curl -v http://google.com
* Connected to google.com (200.175.224.80) port 80 (#0)
GET / HTTP/1.1
Host: google.com
User-Agent: curl/7.47.1
Accept: */*
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.com.br/?gfe_rd=cr&ei=DZnaV9TcIMmm8wf22o3ABA
Content-Length: 262
Date: Thu, 15 Sep 2016 12:50:21 GMT
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.br/?gfe_rd=cr&ei=DZnaV9TcIMmm8wf22o3ABA">here</A>.
</BODY></HTML>
Existem headers para uso na requisição e na resposta
Request Headers
Response Headers
headers customizados
não precisa se limitar aos padrões
* Connected to google.com.br (191.33.177.34) port 80
GET / HTTP/1.1
Host: google.com.br
User-Agent: curl/7.47.1
Accept: */*
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com.br/
Content-Type: text/html; charset=UTF-8
Date: Thu, 15 Sep 2016 12:59:12 GMT
Expires: Sat, 15 Oct 2016 12:59:12 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 222
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
// Corpo da resposta
Headers precedidos de X são customizados
HTTP/1.1 301 Moved Permanently
// Outros headers...
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
HTTP/1.1 200 OK
Location: http://exemplo.com
Content-Type: text/html; charset=UTF-8
Content-Length: 67
X-Server-Version: 1.0.0
<h1>Corpo HTML da mensagem</h1>
Por ser fora do padrão, usem com responsabilidade nas suas aplicações
Siga a errata dos custom headers
http
métodos
GET
POST
DELETE
PUT
TRACE
HEAD
OPTIONS
CONNECT
GET
POST
DELETE
PUT
GET
solicita um recurso
GET / HTTP/1.1
Host: google.com
User-Agent: curl/7.47.1
Accept: */*
post
envia dados para criar recurso
POST /httptutorial/methods HTTP/1.1
User-Agent: curl/7.30.0
Host: localhost:8080
Accept: */*
If-modified-since: Tue, 07 May 2014 18:12:00 GMT
Content-Type: application/x-www-form-urlencoded
Content-Length: 41
Nome=Carlos&Idade=28&Curso=Administracao
put
atualiza o recurso solicitado
PUT /httptutorial/methods/12 HTTP/1.1
User-Agent: curl/7.30.0
Host: localhost:8080
Accept: */*
If-modified-since: Tue, 07 May 2014 18:12:00 GMT
Content-Type: application/x-www-form-urlencoded
Content-Length: 41
Nome=Carlos&Idade=28&Curso=Administracao
delete
remove o recurso solicitado
DELETE /httptutorial/methods/12 HTTP/1.1
User-Agent: curl/7.30.0
Host: localhost:8080
Accept: */*
Explicação resumida sobre os métodos
http
status code
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 28
Date: Tue, 02 Dec 2014 19:17:21 GMT
<h1>Request Recebido!</h1>
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Status Code
HTTP/1.1 200 OK
Rease Phrase
Status Code
00
OK
2
O primeiro dígito define uma classe de resposta
Existem cinco classes
Indica uma resposta provisória
1xx - Informativa
Indica que a ação solicita foi aceita e processada pelo servidor
2xx - Sucesso
Indica que a ação deve ser levado ao cliente
3xx - Redirecionamento
Indica que ocorreu um erro na ação do cliente
4xx - Erro do Cliente
Indica outros tipos de erros encontrados no servidor
5xx - Outros erros
status code
códigos de status mais conhecidos
http
cookies
São dados enviados pelo website para o browser do cliente no momento do seu acesso.
Chave
Valor
VAmos ver tudo isso na prática?
http
especificações
(Alterado em Junho/2014)
HTTP - RFC 2656 7230-7237
URI - RFC 1738 e 3986
COOKIES - RFC 2965
MAIS INFORMAÇÕES
dúvidas?
Obrigado!
Protocolo HTTP
By Gilson Filho
Protocolo HTTP
Apresentação para o mini-curso de protocolo HTTP ministrado na Faculdade Evangélica de Brasília
- 1,346