Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Protocolo HTTP
Search
Gilson Filho
June 06, 2017
Programming
0
520
Protocolo HTTP
Apresentação para o mini-curso de protocolo HTTP ministrado na Faculdade Evangélica de Brasília
Gilson Filho
June 06, 2017
Tweet
Share
More Decks by Gilson Filho
See All by Gilson Filho
Como monitorar os erros da sua aplicação com o Sentry
gilsondev
0
2.1k
Airflow - Automatizando seu fluxo de trabalho
gilsondev
1
1.2k
Airflow: Data Workflow Management
gilsondev
0
460
Workshop Docker
gilsondev
0
410
Django: framework web para perfeccionistas com prazos
gilsondev
0
410
Django - Framework para perfeccionistas em prazos
gilsondev
0
46
Vim - Um editor onipresente e flexível
gilsondev
2
460
Vim - Um editor onipresente e flexível
gilsondev
2
120
Desenvolvendo aplicações web com python e web2py
gilsondev
0
590
Other Decks in Programming
See All in Programming
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
250
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
12
5.7k
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
220
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
2
830
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
750
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
970
快速入門可觀測性
blueswen
0
500
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
130
Beyond ORM
77web
11
1.6k
HTML/CSS超絶浅い説明
yuki0329
0
200
最近のVS Codeで気になるニュース 2025/01
74th
1
220
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.4k
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Mobile First: as difficult as doing things right
swwweet
222
9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Building Your Own Lightsaber
phodgson
104
6.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Six Lessons from altMBA
skipperchong
27
3.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Making Projects Easy
brettharned
116
6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Transcript
PROTOCOLO
COMO NOS COMUNICAMOS?
None
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 utilizado para sistemas de informação de , distribuídos
e colaborativos. Ele é a base para a comunicação de dados da . protocolo de comunicação hipermídia 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
None
None
HTTP É STATELESS
None
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
None
HTTP ESTRUTURA DAS MENSAGENS
REQUISIÇÃO
RESPOSTA
None
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
http://bit.ly/1B1ZAdN Request Headers
http://bit.ly/1yySXwu 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
http://bit.ly/1B235Rh 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: */*
http://bit.ly/1ugUXbc 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 http://bit.ly/1D3FggM
Indica que a ação solicita foi aceita e processada pelo
servidor 2xx - Sucesso http://bit.ly/1wWZC85
Indica que a ação deve ser levado ao cliente 3xx
- Redirecionamento http://bit.ly/12npUmx
Indica que ocorreu um erro na ação do cliente 4xx
- Erro do Cliente http://bit.ly/1Ga6JeZ
Indica outros tipos de erros encontrados no servidor 5xx -
Outros erros http://bit.ly/1Ga6JeZ
STATUS CODE CÓDIGOS DE STATUS MAIS CONHECIDOS
None
None
None
None
None
None
None
None
None
None
None
None
HTTP COOKIES
São dados enviados pelo website para o browser do cliente
no momento do seu acesso.
None
None
Chave Valor
VAMOS VER TUDO ISSO NA PRÁTICA?
HTTP ESPECIFICAÇÕES
(Alterado em Junho/2014) HTTP - RFC 2656 7230-7237 até http://tools.ietf.org/html/7230
http://tools.ietf.org/html/7237
URI - RFC 1738 e 3986 e http://tools.ietf.org/html/1738 http://tools.ietf.org/html/3986
COOKIES - RFC 2965 http://tools.ietf.org/html/2965
MAIS INFORMAÇÕES https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol
DÚVIDAS?
Obrigado!