W W W, H T T P, G E T, P O S T, C O O K I E S
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
WWW E HTTP
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
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)
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
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, …
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)
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
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=
бира
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)
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
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>
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)
O PROTOCOLO HTTP
C O M O O H T T P F U N C I O N A ?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
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:
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>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
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
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
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>
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
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
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
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
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
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/
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
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
VISUALIZAR COOKIES NO
NAVEGADOR
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
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