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!

Made with Slides.com