• Nenhum resultado encontrado

Aula2-120814

N/A
N/A
Protected

Academic year: 2021

Share "Aula2-120814"

Copied!
35
0
0

Texto

(1)
(2)

W W W, H T T P, G E T, P O S T, C O O K I E S

(3)

TABLE OF CONTENTS

WWW e o protocolo HTTP

•  O Protocolo HTTP

•  Modelos de requisição-resposta

•  Métodos GET vs. POST

•  Códigos de resposta HTTP

Cookies

(4)

WWW E HTTP

(5)

O QUE É WWW?

WWW = World Wide Web = Web

•  Sistema distribuido global na internet

•  Um serviço na Internet (como E-mail, DNS, ...)

•  Consiste num conjunto de documentos (e outras fontes)

localizados em vários servidores da Internet

•  Acesso via protocolos padrão como HTTP, HTTPS e FTP por sua URL •  Web servers provê conteúdo Web

(6)

COMPONENTES DO WWW

•  Componentes Estruturais

•  Internet – Fornece canais de transferência de dados sobre os

protocolos TCP e HTTP

•  Clientes (Web browsers) – exibem o conteúdo Web

•  Web servers – IIS, Apache, Tomcat, GWS, etc.

•  Componentes semânticos

•  Hyper Text Transfer Protocol (HTTP)

•  Hyper Text Markup Language (HTML)

•  Uniform Resource Locator (URL)

(7)

INFRASTRUTURA DO WWW

Clients usam aplicativos navegadores da Web

para requisitar recursos dos servidores Web via

HTTP

Recursos posuem um endereço URL único

Servidores enviam o recurso requisitado como

resposta

Ou respondem com uma mensagem de erro

Páginas Web são recursos na WWW

Textos HTML, imagens, animações e outros arquivos

Páginas Web

(8)

INFRAESTRUTURA WWW (2)

Navegadores exibem as páginas Web retornadas

pelos servidores Web

Páginas são escritas em HTML (Hyper Text Markup

Language)

Navegadores exibem textos, imagens, sons, etc.

Páginas HTML contem hyperlinks para outras

páginas

O sistema WWW inteiro é executado sobre

protocolos padrão

TCP, DNS, HTTP, FTP, …

(9)

COMPONENTES PRINCIPAIS DA

WWW: URL

•  Uniform Resource Locator (URL)

•  Localização única de recursos na WWW

•  É apenas uma string formatada, que consiste em:

•  Protocolo para comunicação entre servidores (e.g., http, ftp, https, ...)

•  Nome do servidor ou endereço IP + porta opicional (e.g. www.ufms.br, mail.bg:8080)

•  Caminho enome do recurso (e.g. index.php)

•  Parametros (opicional, e.g. ?id=27&lang=en)

(10)

CODIFICAÇÃO URL

URLs são codificadas de acordo com RFC 1738:

“... Apenas caracteres alfanuméricos [0-9a-zA-Z], os

caracteres especiais $-_.+!*'() e caracteres reservados

usados para finalidades específicas podem ser usados

descodificados em uma URL

Qualquer outro caractere deve ser codificado:

%[código hexadecimal na ISO-Latin character set]

Exemplo: espaço tem código decimal 32, em hex, 20,

portanto espaço em URL se torna %20

(11)

EXEMPLOS URL

URLs válidas:

URLs inválidas:

http://www.google.com/search?

sourceid=navclient&ie=UTF-­‐8&rlz=1T4GGLL_enBG369BG3

69&q=http+get+vs+post  

http://bg.wikipedia.org:80/wiki/%D0%A2%D0%B5%D0%BB

%D0%B5%D1%80%D0%B8%D0%B3  

http://www.google.com/search?&q=C#  .NET  4.0  

Deve ser:

?q=C%23+.NET+4.0

 

http://www.google.com/search?&q=

бира

 

(12)

COMPONENTES PRINCIPAIS DA WWW:

HTML

Hyper Text Markup Language (HTML)

•  Notation for describing formatted text with images and hyperlinks

•  Interpreted and displayed by the Web browsers

A Web (HTML) page consists of:

•  HTML file

•  CSS stylesheet file (optional)

•  A bunch of images (optional)

(13)

COMPONENTES PRINCIPAIS DA WWW:

HTML

HTML é intuitiva e fácil de aprender

Documentos HTML são apenas documentos de

text

•  Fácil de adicionar formatação, hyperlinks, ítens, etc.

•  Imageins podem ser adicionadas em arquvios separados

Podem ser automaticamente geradas por

porgramas

•  Ferramentas paraajudar usuários a criarem páginas HTML

•  E.g. FrontPage, Dreamweaver, Visual Studio

(14)

EXEMPLO - HTML

<html>      <head><title>Exemplo</title></head>      <body>          <h1>Título  1</h1>          <h2>Sub  título  2</h2>  

       <h3>Sub  Sub  título  3</h3>  

       <p>Este  é  meu  primeiro  Parágrafo</p>          <p>Este  aqui  é  outro  parágrafo</p>          <div  align="center"  

           style="background:skyblue">              Esta  é  uma  DIV</div>    

(15)
(16)

COMPONENTES PRINCIPAIS DA WWW:

HTML

Hyper Text Transfer Protocol (HTTP)

Protocolo cliente-servidor para transferência de

conteúdo Web (Arquivos HTML, imagens, estilos,

etc.)

Propriedades importantes do HTTP

Modelo requisição->resposta

Formato baseado em texto

Depende em uma única fonte URL

Provê metadados de conteúdo (ex. Codificação

UTF-8)

(17)

O PROTOCOLO HTTP

C O M O O H T T P F U N C I O N A ?

(18)

HTTP: PROTOCOLO

REQUISIÇÃO-RESPOSTA

Programa Cliente

•  Executado na máquina

final

•  Ex. Web browser

•  Requisições de conteúdo

• 

Programa servidor

Rodando no servidor

E.g. Web server

Provê conteúdo

GET  /index.html   HTTP/1.0  

HTTP/1.0  200  OK   ”Bem  vindo  ao    

(19)

GET  /academy/about.aspx  HTTP/1.1  

Host:  www.telerik.com  

User-­‐Agent:  Mozilla/5.0  

<CRLF>  

EXEMPLO: HYPER TEXT

TRANSFER PROTOCOL

HTTP/1.1  200  OK  

Date:  Mon,  5  Jul  2010  13:09:03  GMT  

Server:  Microsoft-­‐HTTPAPI/2.0  

Last-­‐Modified:  Tue,  12  Jul  2014  08:02:23  GMT  

Content-­‐Length:  54  

<CRLF>  

<html><title>Hello</title>  

Welcome  to  our  site</html>  

®

Requisição HTTP:

A linha vazia

denota o fim do

cabeçalho de

requisição

A linha vazia

denota o fim do

cabeçalho de

resposta

®

Resposta HTTP:

(20)

MENSAGEM DE REQUISIÇÃO DE HTTP

• 

Mensagens de requisição enviadas por um

cliente consiste em

Linha de requisição – método de requisição (GET,

POST, HEAD, ...), recurso URI, e versão de

protocolo

Cabeçalho de requisição – parametros

adicionais

Corpo – Dados opcionais

Ex. Formulários, arquivos, etc.

<request  method>  <resource>  HTTP/<version>   <headers>  

(21)

REQUISIÇÃO HTTP GET– EXEMPLO

POST  /test/demo_form.asp  HTTP/1.1  

Host:  w3schools.com  

Accept:  */*  

Accept-­‐Language:  en  

Accept-­‐Encoding:  gzip,  deflate  

User-­‐Agent:  Mozilla/4.0(compatible;MSIE  6.0;  

Windows  NT  5.0)  

Connection:  Keep-­‐Alive  

Cache-­‐Control:  no-­‐cache  

<CRLF>  

®

Linha de

requisição HTTP

Cabeçalhos

HTTP

O Corpo da requisição

está vazia

(22)

HTTP POST REQUEST – EXAMPLO

Exemplo de requisição POST

POST  /webmail/login.phtml  HTTP/1.1   Host:  www.abv.bg  

Accept:  */*  

Accept-­‐Language:  bg  

Accept-­‐Encoding:  gzip,  deflate  

User-­‐Agent:  Mozilla/4.0(compatible;MSIE  6.0;  Windows  NT  5.0)   Connection:  Keep-­‐Alive   Cache-­‐Control:  no-­‐cache   Content-­‐Length:  59   <CRLF>   LOGIN_USER=mente   DOMAIN_NAME=abv.bg   LOGIN_PASS=top*secret!  

Linha de

Requisição HTTP

Cabeçalho

HTTP

O Corpo da requisição

contem formulário de

(23)

HTTP GET CONDICIONAL– EXAMPLO

• 

Captura o conteúdo se e somente se ele

tiver sido modificado no servidor

Servidor responde com “304  Not  Modified”

se o conteúdo não tiver sido alterado

Ou “200  OK” com a última versão

GET  /academy/join.aspx  HTTP/1.1  

Host:  www.telerik.com  

User-­‐Agent:  Gecko/20100115  Firefox/3.6  

If-­‐Modified-­‐Since:  Tue,  9  Mar  2010  11:12:23  GMT  

(24)

MENSAGENS DE RESPOSTA HTTP

Mensagens de resposta enviadas pelo servidor

•  Linha de status – versão do protocolo, código de status e

frase de status

•  Cabeçalho de resposta – provê meta dados

•  Corpo – o conteúdo de resposta (conteúdo requisitado)

HTTP/<version>  <status  code>  <status  text>  

<headers>  

<CRLF>  

(25)

HTTP RESPOSTA – EXEMPLO

HTTP/1.1  200  OK  

Date:  Fri,  17  Jul  2010  16:09:18  GMT+2  

Server:  Apache/2.2.14  (Linux)  

Accept-­‐Ranges:  bytes  

Content-­‐Length:  84  

Content-­‐Type:  text/html  

<CRLF>  

<html>  

   <head><title>Test</title></head>  

   <body>Test  HTML  page.</body>  

</html>  

Linha de status HTTP

Cabeçalho

de resposta

HTTP

O Corpo da

resposta HTTP

(26)

HTTP RESPONSE – EXAMPLE

HTTP/1.1  404  Not  Found  

Date:  Fri,  17  Jul  2010  16:09:18  GMT+2   Server:  Apache/2.2.14  (Linux)  

Connection:  close  

Content-­‐Type:  text/html   <CRLF>  

<HTML><HEAD>  

<TITLE>404  Not  Found</TITLE>   </HEAD><BODY>  

<H1>Not  Found</H1>  

The  requested  URL  /img/telerik-­‐logo.gif  was  not   found  on  this  server.<P>  

<HR><ADDRESS>Apache/2.2.14  Server  at  Port  80</ ADDRESS>  

Linha de status

Cabeçalhos de

resposta HTTP

(27)

CONTENT-TYPE E DISPOSITION

O cabeçalho Content-Type no servidor especifica

como a saída para o cliente deve ser processada

Examplos:

Content-­‐Type:  text/html;  charset=utf-­‐8  

Página HTML codificada em

UTF-8. Será exibida no

navegador.

Content-­‐Type:  application/pdf  

Content-­‐Disposition:  attachment;  

   filename="Financial-­‐Report-­‐April-­‐2010.pdf"  

Isto irá fazer o download do

arquivo PDF nomeado como

(28)

MÉTODOS DE REQUISIÇÃO HTTP

Métodos de requisição HTTP:

•  GET

•  Retorna o recurso especificado, executa um programa no

servidor, ou apenas faz o download de um arquivo, …

•  HEAD

•  Retorna o meta-dado associado ao conteúdo (apenas

cabeçalho)

•  POST

•  Atualiza um conteúdo, provê dados de input para o

(29)

CÓDIGOS DE RESPOSTA HTTP

Classes de códigos de resposta HTTP

1xx: informacional (ex., “

100  Continue

”)

2xx: sucesso (ex., “

200  OK

”)

3xx: redirecionamento (ex., “

304  Not  

Modified

”, "

302  Found

")

4xx: erro no cliente (ex., “

404  Not  Found

”)

5xx: erro no servidor (ex., “

503 Service

Unavailable

”)

• 

"

302  Found

" é usado para redirecionar o

(30)

REDIREÇÃO DO BROWSER

Exemplo de redirecionamento HTTP no navegador

•  HTTP GET solicitando uma URL movida:

•  A reposta HTTP diz que o navegador deve solicitar outra

URL

GET  /  HTTP/1.1  

Host:  academy.telerik.com  

User-­‐Agent:  Gecko/20100115  Firefox/3.6   <CRLF>  

HTTP/1.1  301  Moved  Permanently  

Location:  http://www.telerik.com/academy/  

(31)

HTTP COOKIES

•  Cookie

•  Cookies são pequenos pedaços de dados armazenados pelo

cliente a pedido do servidor

•  Incluidos em todas as futuras requisições HTTP ao servidor

requisição  

resposta  

Set-­‐Cookie:  XYZ  

Próx.  requisição  

Cookie:  XYZ  

(32)

COOKIES – EXEMPLO

O cliente solicita uma URL:

O servidor define um Cookie para a resposta HTTP:

Em requisições futuras a google.com o navegador

envia o cookie no cabeçalho HTTP:

GET  /  HTTP/1.1  

Host:  www.google.com  

HTTP/1.1  200  OK  

Set-­‐Cookie:  PREF=ID=c0bf5fd5c3a25209;  expires=Wed,   11-­‐Jul-­‐2012  16:13:22  GMT;  domain=.google.com  

GET  /  HTTP/1.1  

(33)

VISUALIZAR COOKIES NO

NAVEGADOR

(34)

FERAMENTAS DE DESENVOLVIMENTO

HTTP

Firebug plug-in para Firefox

•  Recomendado para desenvolvedores

•  Ferramenta para monitoramento, edição e debug de HTTP, HTML, CSS, JavaScript, etc.

•  Gratuita, open-source – www.getfirebug.com

Fiddler – HTTP proxy

•  Intercepta o tráfico HTTP

•  Analisa conversas HTTP

(35)

FERAMENTAS DE DESENVOLVIMENTO

HTTP

•  Wireshark, analisador de pacotes

•  Farejador de pacotes em baixo-nível

•  Intercepta todo o tráfico IP de uma rede

•  Pode reconstruir conversações HTTP

•  Pode interceptar qualquer protocolo não criptografado

•  IP, ICMP, TCP, UDP, HTTP, DNS, SMTP, POP3

•  Pode interceptar senhas em texto puro

Referências

Documentos relacionados