250 likes | 366 Views
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
E N D
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 Cliente http Servidor Http 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 • <Request-URI> • Path absoluto relativamente à raiz do servidor Web, ou • URI (URL) absoluto. • Exemplo <COMMAND> <Request-URI> HTTP/1.X <crlf> { <Header>: <Value> <crlf>}+ <crlf> [<data>] 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: ober@san.uri.br * uma linha em branco *
Sintaxe do protocolo • Resposta HTTP • Sintaxe • Exemplo HTTP/1.X <result-code> [<message>] <crlf> { <Header>: <Value> <crlf>}+ <crlf> [<data>] 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 Métodos mais utilizados • 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 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: 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 ... 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 *
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: grobe@www.cc.ukans.edu Content-type: application/x-www-form-urlencoded Content-length: 150 Host: www.isel.pt org=Academic%20Computing%20Services &users=10000 &browsers=lynx &browsers=cello &browsers=mosaic &others=MacMosaic%2C%20WinMosaic &contact=Michael%20Grobe%20grobe@kuhub.cc.ukans.edu Resposta: (incompleta) Content-Type: text/html <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 grobe@kuhub.cc.ukans.edu </li> </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: 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 Pedido: HEAD /index.html HTTP/1.1 Accept: */* Host: www.host.com * a blank line *
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-1999 23:00:00 GMT • Sintaxe do header cookie no pedido HTTP • Exemplo: Cookie: CUSTOMER=WILE_E_COYOTE Set-Cookie: {<NAME>=<VALUE>;}+ [expires=<DATE>;] [path=<PATH>;] [domain=<DOMAIN_NAME>;] [secure] <DATE> Wdy, DD-Mon-YYYY HH:MM:SS GMT Cookie: {<NAME>=<VALUE>;}+
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 Web Server TCP Connect SSL Connect HTTPS GET transaction
Exercicios • Resolver os exercicios contidos no post na página da disciplina