Tópicos de Sistemas
de Informação A
Carlos Oberdan Rolim
Ciência da Computação
HTTP
(Hypertext Transfer Protocol)
Histórico
Panorama do final da década de 80
Grande quantidade de mails
Inicio de documentos contendo hyperlinks
Versão HTTP/0.9
Em torno de 1990
Transferencia exclusiva de textos
Somente possuia método GET
Histórico
Versão HTTP/1.0
Desenvolvida entre 1992-1996
RFC 1945
Supriu a necessidade de transferir apenas texto
Passou a transferir mensagens do tipo MIME44 (Multipurpose Internet
Mail Extension)
Implementação dos métodos POST e HEAD
Versão HTTP/1.1
RFC 2616 publicada em 19999
Conexões persistentes
Uso de servidors proxy
Novos métodos
Versão utilizada atualmente
Arquitetura
Protocolo de aplicação de uso genérico
O pedido é feito em ASCII e a resposta é do tipo MIME
(RFC 822 e RFCs 2045, 2046, 2047, 2048, 2049)
O protocolo não necessita de manutenção de estado
associado aos pedidos dos clientes (stateless)
Servidor recebe pedidos em TCP/IP no porto 80
(normalmente)
servidor
Pedido HTTP (GET …)
Resposta MIME
Arquitetura
Papel do cliente
Efetuar as requisições para o servidor seguindo os padrões definidos
pelo protocolo
Receber a resposta, interpreta-la e apresentar ao usuário
Pode implementar mecanismos de cache
Arquitetura
Papel do servidor
Servidor recebe a requisição
A configuração do servidor determina se a requisição é a um documento
estático ou gerado dinâmicamente por uma aplicação ( por exemplo um
CGI)
Se for um documento gerado dinamicamente servidor executa a
aplicação e recebe a resposta da execução
Documentos estáticos podem possuir “server side includes”
Servidor retorna resposta ao cliente juntamente com cabeçalhos de
resposta
Pode implementar mecanismos de cache
Sintaxe do protocolo
Pedido HTTP
Sintaxe
<COMMAND> <Request-URI> HTTP/1.X <crlf>
{ <Header>: <Value> <crlf>}+
<crlf>
[<data>]
<Request-URI>
Path absoluto relativamente à raiz do servidor Web, ou
URI (URL) absoluto.
Exemplo
GET /index.html HTTP/1.1
Accept: */* (outros exemplos: text/plain; text/html; image/gif )
User-Agent: Mozilla4.0 (compatible; MSIE 5.0; Windows NT
5.0)
Host: www.san.uri.br
From: [email protected]
* uma linha em branco *
Sintaxe do protocolo
Resposta HTTP
Sintaxe
HTTP/1.X <result-code> [<message>] <crlf>
{ <Header>: <Value> <crlf>}+
<crlf>
[<data>]
Exemplo
HTTP/1.1 200 OK
Date: Wednesday, 02-Feb-98 15:04:12 GMT
Server: Apache1.3.6 (Unix) (Red Hat Linux)
MIME-version: 1.0
Last-modified: Monday, 15-Nov-93 23:33:16 GMT
Content-type: text/html
Content-length: 2345
* linha em branco *
<HTML><HEAD><TITLE> . . . </TITLE> . . .etc.
Métodos HTTP
GET
obtém dados do recurso especificado
POST
Métodos
mais
utilizados
envia dados ao servidor
HEAD
solicita apenas o cabeçalho HTTP
PUT
especifica que o corpo que está sendo enviado é para ser escrito na
URL (inverso de GET)
Métodos HTTP
DELETE
remove um recurso
TRACE
Usado para testes e diagnósticos
CONNECT:
Reservado para uso por proxies
OPTIONS
retorna quais métodos são suportados para um documento no servidor
Códigos de resposta do servidor
Códigos de retorno
2XX - códigos de OK
3XX - recolocação/redireccionamento
4XX - Erro no cliente
5XX - Erro no servidor
Exemplos:
200 OK
201 Criado
204 Sem conteúdo
304 Não modificado
400 Pedido mal formado
401 Não tem autorização
501 Comando não implementado
Cabeçalhos MIME
Geral: informação não relacionada com a entidade a
transferir
Date: Tue, 15 Nov 1994 08:12:31 GMT
MIME-Version: 1.0
Opções cliente: permite ao cliente passar informações
acerca do pedido
Accept: */* ou text/plain; text/html; image/gif
User-Agent: Lynx/2.2 libwww/2.14
Range: bytes=0-499
If-Modified-Since: Thu, 25 Sep 1997 15:01:26 GMT
Cookie:EGSOFT_ID=193.137.220.2-640807376.29152144; expires=Fri,
31-Dec-1997 0:00:00 GMT;path=/
Cabeçalhos MIME
Resposta: informação sobre o servidor
Server: Apache/1.2b7
Content-Range: bytes=0-499/2000
Set-Cookie: EGSOFT_ID=193.137.220.2-640807376.29152144;
expires=Fri, 31-Dec-1997 0:00:00 GMT;path=/
Entidade: informação sobre os dados entre cliente e servidor
Last-Modified: Thu, 25 Sep 1997 15:01:26 GMT
Content-Length: 6575
Content-Type: text/html
Expires: Thu, 25 Sep 1997 15:01:26 GMT
Método GET
Solicita um recurso
Corpo sempre vazio
Resposta:
Pedido:
GET /index.html HTTP/1.1
User-Agent: Mozilla/2.02Gold (WinNT; I...)
Host: www.host.com
Accept: image/gif, image/x-xbitmap, image/jpeg
* a blank line *
HTTP/1.1 200 Document follows
Date: Fri, 20 Sep 1996 08:17:58 GMT
Server: NCSA/1.5.2
Last-Modified: Mon, 17 Jun 1996 21:53:08 GMT
Content-Type: text/html
Content-Length: 2482
* a blank line *
... corpo do documento ...
Método POST
O cliente envia dados ao servidor no pedido (no corpo)
O conteúdo do pedido é passado à aplicação que processa os dados
Pedido:
Resposta: (incompleta)
POST /cgi-bin/post-query HTTP/1.1
Accept: */*
User-Agent: Lynx/2.2 libwww/2.14
From: [email protected]
Content-type: application/x-www-form-urlencoded
Content-length: 150
Host: www.isel.pt
Content-Type: text/html
org=Academic%20Computing%20Services
&users=10000
&browsers=lynx
&browsers=cello
&browsers=mosaic
&others=MacMosaic%2C%20WinMosaic
&contact=Michael%20Grobe%[email protected]
<h1>Query Results</h1>
You submitted the following name/value pairs:
<ul>
<li>org = Academic Computing Services </li>
<li>users = 10000 </li>
<li>browsers = cello </li>
<li>browsers = lynx </li>
<li>browsers = xmosaic </li>
<li>others = Mac Mosaic, Win Mosaic </li>
<li>contact = Michael Grobe [email protected] </
</ul>
Método PUT
Similar ao POST porém PUT pode apontar para um recurso
que não existe ainda (será criado ou reescrito)
Usado para publicação de páginas
Método HEAD
Pede de informações sobre o documento e não o documento
em si.
Data da última modificação, dimensão, tipo, etc.
Corpo sempre vazio
Resposta:
Pedido:
HEAD /index.html HTTP/1.1
Accept: */*
Host: www.host.com
* a blank line *
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Tue, 10 Nov 1998 16:52:11 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Mon, 29 Dec 1997 01:55:11 GMT
ETag: "10e93cccfc13bd1:37f9"
Content-Length: 2604
Cookies HTTP
O que são Cookies?
Mecanismo que permite a aplicações HTTP servidoras guardar e obter
informações sobre o cliente.
Manutenção de informação de estado sobre o cliente.
Que informação contém um Cookie
Informação sobre o estado do cliente na forma de um par nome=valor
‘Range’ de URLs para o qual o estado é válido
Data de validade (para o caso de Cookies persistentes)
Cookies HTTP
Sintaxe do header set-cookie na resposta HTTP
Set-Cookie: {<NAME>=<VALUE>;}+ [expires=<DATE>;]
[path=<PATH>;] [domain=<DOMAIN_NAME>;] [secure]
<DATE>  Wdy, DD-Mon-YYYY HH:MM:SS GMT
Exemplo:
Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/;
expires=Wednesday, 09-May-1999 23:00:00 GMT
Sintaxe do header cookie no pedido HTTP
Cookie: {<NAME>=<VALUE>;}+
Exemplo:
Cookie: CUSTOMER=WILE_E_COYOTE
HTTPS
(Hypertext Transfer Protocol Secure)
HTTPS
Implementação do HTTP sobre uma camada SSL (Secure
Sockets Layer) ou TLS (Transport Layer Security)
Dados transmitidos de forma criptografada através da
negociação de uma chave publica gerada aleatóriamente no
inicio da sessão
Criptografia ocorre na camada de transporte
Porta padrão TCP/443
URLs do tipo: https://
HTTPS
HTTPS
SSL
TCP
HTTPS
Client Browser
TCP
Connect
SSL
Connect
HTTPS GET
transaction
Web Server
Exercicios
Resolver os exercicios contidos no post na página da
disciplina
Download

Tópicos de Sistemas de Informação A