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 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 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) Pedido HTTP (GET …) Resposta MIME servidor
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 Path absoluto relativamente à raiz do servidor Web, ou URI (URL) absoluto. Exemplo HTTP/1.X { : }+ [ ] 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: From: * uma linha em branco *
Sintaxe do protocolo Resposta HTTP Sintaxe Exemplo HTTP/1.X [ ] { : }+ [ ] HTTP/ 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 *......etc.
Métodos HTTP GET obtém dados do recurso especificado POST 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 mais utilizados
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 :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 :01:26 GMT Cookie:EGSOFT_ID= ; expires=Fri, 31-Dec :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= ; expires=Fri, 31-Dec :00:00 GMT;path=/ Entidade: informação sobre os dados entre cliente e servidor Last-Modified: Thu, 25 Sep :01:26 GMT Content-Length: 6575 Content-Type: text/html Expires: Thu, 25 Sep :01:26 GMT
Método GET Solicita um recurso Corpo sempre vazio Pedido: GET /index.html HTTP/1.1 User-Agent: Mozilla/2.02Gold (WinNT; I...) Host: Accept: image/gif, image/x-xbitmap, image/jpeg * a blank line * Resposta: HTTP/ Document follows Date: Fri, 20 Sep :17:58 GMT Server: NCSA/1.5.2 Last-Modified: Mon, 17 Jun :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: POST /cgi-bin/post-query HTTP/1.1 Accept: */* User-Agent: Lynx/2.2 libwww/2.14 From: Content-type: application/x-www-form-urlencoded Content-length: 150 Host: org=Academic%20Computing%20Services &users=10000 &browsers=lynx &browsers=cello &browsers=mosaic &others=MacMosaic%2C%20WinMosaic Resposta: (incompleta) Content-Type: text/html Query Results You submitted the following name/value pairs: org = Academic Computing Services users = browsers = cello browsers = lynx browsers = xmosaic others = Mac Mosaic, Win Mosaic contact = Michael Grobe
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 Pedido : HEAD /index.html HTTP/1.1 Accept: */* Host: * a blank line * Resposta: HTTP/ OK Server: Microsoft-IIS/4.0 Date: Tue, 10 Nov :52:11 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Mon, 29 Dec :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 Exemplo: Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-May :00:00 GMT Sintaxe do header cookie no pedido HTTP Exemplo: Cookie: CUSTOMER=WILE_E_COYOTE Set-Cookie: { = ;}+ [expires= ;] [path= ;] [domain= ;] [secure] Wdy, DD-Mon-YYYY HH:MM:SS GMT Cookie: { = ;}+
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 SSL TCP
Client BrowserWeb Server TCP Connect SSL Connect HTTPS GET transaction HTTPS
Exercicios Resolver os exercicios contidos no post na página da disciplina