Hypertext Transport Protocol (HTTP)

Documentos relacionados
HyperText Transfer Protocol (HTTP)

Redes de Computadores Grupo de Redes de Computadores

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

Programação para Internet Flávio de Oliveira Silva, M.Sc.

Java, HTTP, CGI e Linguagens de Scripting

APLICAÇÕES E SERVIÇOS WEB

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

O protocolo HTTP. O que é o protocolo HTTP?

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Fernando M. V. Ramos, RC (LEI), TP02. HTTP. Redes de Computadores

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

Aula 14 Serviços Internet (Servidor Web Apache)

Universidade Federal de Mato Grosso

1.264 Lição 11. Fundamentos da Web

Universidade da Beira Interior

Aulas Práticas. Implementação de um Proxy HTTP. O que é um proxy?

6127. Redes comunicação de dados. 2014/2015. Acesso à Internet.

Redes de Computadores I

Teia de alcance mundial (World Wide Web WWW) Web composta de

Como se defender utilizando software livre na era da espionagem

SIP Session Initiation Protocol

Redes de Computadores (RCOMP 2014/2015)

O protocolo HTTP. Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP.

PHP: Cookies e Sessões

Desenvolvimento Web Histórico da Internet e Protocolos

HYPERTEXT TRANSFER PROTOCOL

Hyper Text Transfer Protocol (HTTP) ADI HTTP 1/18

Capítulo 7. Hyper Text Transfer Protocol (HTTP). Serviço Apache. - Protocolo HTTP - Sessão HTTP - Configuração do serviço Apache

Desenvolvimento Web Protocolos da Internet

Redes de Computadores

Protocolo HTTP. Palavras-chave: Navegador, aplicativos, web, cliente, servidor.

Breve introdução a User Dir e Senhas no Apache Uma abordagem prática (aka crash course on User Dir and Directory Authentication on Apache)

Camada de aplicação Conceitos, implementação de protocolos da camada de aplicação

Camada de aplicação. Aplicações em rede

REDES DE COMPUTADORES. Prof. Evandro Cantú

Sistemas Distribuídos na Web. Pedro Ferreira DI - FCUL

rumo ao HTTP 2.0 o que vem por aí e o que você pode utilizar já com SPDY

Administração de Sistemas

TCP/IP - NÍVEL APLICAÇÃO (utilizador)

Redes de Computadores I. Sockets e Arquitetura HTTP

Aula 1 Cleverton Hentz

FPROT HTTP(s), FTP, DHCP, SQUID e SAMBA. Aula 1 SENAC TI Fernando Costa

Redes de Computadores

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Correio eletrônico. Sistema de correio da Internet composto de

Redes de Computadores

ADMINISTRAÇÃO DE REDES DE COMPUTADORES 8/11/2005 UALG/FCT/DEEI 2005/2006

Arquitetura TCP/IP Nível de Aplicação (HTTP, SMTP, FTP & DNS) Prof. Helber Silva

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

Redes de Computadores 1 o Exame

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Fernando Bracalente. O trabalho final consiste em escolher um dos "malwares-novos" e responder algumas questões.

2Arquitetura cliente-servidor

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados

Comunicação entre Processos

Rede de Computadores (REC)

HTTP. passado, presente e futuro.

@sergio_caelum sergiolopes.org

Manual de utilização do STA

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

ALCY JOSÉ VIEIRA NETO ALEXANDRE SOHN CINTIA CAVICHIOLO PROTOCOLO HTTP

Capítulo 2 A Camada de Aplicação Prof. Othon Marcelo Nunes Batista Mestre em Informática

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza

WWW, CGI e HTTP Java Deployment Course: Aula 2. por Jorge H. C. Fernandes (jhcf@di.ufpe.br) DI-UFPE 28 de Abril de 1999

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

A Camada de Aplicação

O espaço de nomes DNS Registros de recursos de domínio Servidores de nome

Redes de Computadores

Camada de aplicação. Camada de aplicação

Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior

Tecnologias Web. Java Servlets

Trabalho de laboratório sobre HTTP

Formação IPv6 Maputo Moçambique 26 Agosto - 29 Agosto 08 Configuração de Servidor WEB e FTP

Mônica Oliveira Primo de Lima Edervan Soares Oliveira TRABALHO SOBRE PROTOCOLO HTTP

Input de dados a partir de formulários HTML

SOAP. Web Services & SOAP. Tecnologias de Middleware 2004/2005. Simple Object Access Protocol. Simple Object Access Protocol SOAP

UMA ANÁLISE DAS TROCAS DE MENSAGENS DO PROTOCOLO HTTP ATRAVÉS DE UM SIMULADOR DE REDES DE COMPUTADORES

6. Fundamentos HTTP O que é HTTP Métodos

Redes de Computadores e a Internet

Cookies e sessões. HTTP é um protocolo que não mantém estado, isto é não tem memória.

Redes de Computadores

Redes de Computadores

Tecnologias da Internet (T) Avaliação de Frequência (v1) 60 minutos *

INTRODUÇÃO A REDES DE COMPUTADORES. Alan Nakai

Introdução a WEB. Contato: <lara.popov@ifsc.edu.br> Site:

Universidade Federal do Rio Grande do Norte

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

PTC Aula A Web e o HTTP. (Kurose, p ) (Peterson, p ) 24/03/2017

Introdução. Página web. Tipos de documentos web. HyperText Transfer Protocol. Rd Redes de Computadores. Aula 27

Protocolo HTTP. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 22

Redes de Computadores

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

Universo Online. Loja de Aplicativos - API v1.0 [05/2012]

Instalando servidor Apache

Transcrição:

Hypertext Transport Protocol () Programação na Internet Secção de Sistemas e Tecnologias de Informação ISEL-DEETC-LEIC Luis Falcão - lfalcao@cc.isel.ipl.pt Carlos Guedes cguedes@cc.isel.ipl.pt Nuno Datia datia@isel.ipl.pt

Autores e contributos Autores Luís Falcão Contributos Paulo Pereira Pedro Félix Jorge Martins Carlos Guedes 2

Hypertext Transfer Protocol () Protocolo usado para transportar informação na World Wide Web Objectivo original: Transferir documentos em hiper-texto (HTML) Evolução do protocolo coordenada pelo W3C RFC 1945 - Versão 1.0 RFC 2616 - Versão 1.1 (usada actualmente) Modelo de interacção: Pedido/Resposta Principal característica: stateless Servidor recebe pedidos em TCP no porto 80 (normalmente) Pedido ASCII (GET, POST, ) User Agent (Web Browser) Resposta MIME Web Server ou Proxy 3

Pedido no browser client www.cc.isel.ipl.pt IP address? Internet Web server www.cc.isel.ipl.pt IP address is Local DNS server Authoritative DNS server for www.cc.isel.ipl.pt 4

Pedido Sintaxe <COMMAND> <Request-URI> /1.X <crlf> {<Header>: <Value> <crlf>}+ <crlf> [<data>] <Request-URI> - Path absoluto relativamente à raiz do servidor Web, ou URI (URL) absoluto. Exemplo GET /docu2.html /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.isel.ipl.pt From: montulli@www.cc.ukans.edu * a blank line * 5

Resposta Sintaxe /1.X <result-code> [<message>] <crlf> { <Header>: <Value> <crlf>}+ <crlf> [<data>] Exemplo /1.1 200 OK Date: Wednesday, 12-Jul-06 15:04:12 GMT Server: Apache1.3.6 (Unix) (Red Hat Linux) MIME-version: 1.0 Last-modified: Monday, 11-Jul-06 23:33:16 GMT Content-type: text/html Content-length: 2345 * a blank line * <HTML><HEAD><TITLE>... </TITLE>...etc. 6

Pedidos Tipo de pedidos GET HEAD POST PUT (Request Methods) DELETE TRACE OPTIONS Descrição Pedido a representação de um recurso (método mais comum) Pedido idêntico ao GET mas o corpo da resposta não é enviado (apenas os headers) Envio de dados para um recurso. Os dados vão no corpo do pedido Actualiza a representação de um recurso Remove um recurso Retorna o eco do pedido Retorna os métodos suportados pelo servidor 7

Códigos de resposta do servidor Classe das respostas 1xx Informação 2xx Sucesso 3xx Redireccionamento 4xx Erro Cliente 5xx Erro Servidor 3xx Redirection The client must take additional action to complete the request. 300: Multiple Choices 301: Moved Permanently 302: Moved Temporarily (/1.0) 302: Found (/1.1) 1xx Informational Request received, continuing process. 100: Continue 101: Switching Protocols 2xx Success The action was successfully received, understood, and accepted. 200: OK 201: Created 202: Accepted 203: Non-Authoritative Information 204: No Content 205: Reset Content 206: Partial Content 4xx Client Error The request contains bad syntax or cannot be fulfilled. 400: Bad Request 401: Unauthorized 402: Payment Required 403: Forbidden 404: Not Found 405: Method Not Allowed 406: Not Acceptable 407: Proxy Authentication Required 408: Request Timeout 5xx Server Error The server failed to fulfill an apparently valid request. 500: Internal Server Error 501: Not Implemented 502: Bad Gateway 503: Service Unavailable 504: Gateway Timeout 505: Version Not Supported 509: Bandwidth Limit Exceeded 8

Cabeçalhos MIME (1) 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: */* 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=/ 9

Cabeçalhos MIME (2) 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 10

GET Pede um recurso (ficheiro, CGI, etc.) Corpo sempre vazio Pedido GET /index.html /1.1 User-Agent: Mozilla/2.02Gold (WinNT; I...) Host: www.ora.com Accept: image/gif, image/x-xbitmap, image/jpeg * a blank line * Resposta (exempo) /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... 11

Realizar pedido GET Utilizar a aplicação telnet para realizar pedido a determinado servidor Web

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 e resposta) Pedido HEAD /default.htm /1.1 Accept: */* Host: www.deetc.isel.ipl.pt * a blank line * Resposta /1.1 200 OK Server: Microsoft-IIS/5.0 MicrosoftOfficeWebServer: 5.0_Pub X-Powered-By: ASP.NET Date: Tue, 07 Oct 2008 21:46:22 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Thu, 18 Sep 2008 19:59:03 GMT ETag: "1000c919c91:df5" Content-Length: 9870 13

POST (1) 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 /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 14

POST (2) 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> 15

Headers (1) General headers Cache-Control, Connection, Date, Pragma, Transfer-Encoding, Upgrade, e Via. Entity headers Allow, Content-Base, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-MD5, Content-Range, Content-Type, ETag, Expires, e Last-Modified. Request headers Accept, Accept-Charset, Accept-Encoding, Accept-Language, Authorization, From, Host, If-Modified-Since, If-Match, If-None-Match, If-Range, If- Unmodified-Since, Max-Forwards, Proxy-Authorization, Range, Referer, e User- Agent. Response headers Accept-Ranges, Age, Location, Proxy-Authenticate, Public, Retry-After, Server, Vary, Warning, e WWW-Authenticate. 16

Headers (2) Request headers Header Descrição Accept Formatos aceites pelo cliente (text/html, etc ) Accept-Encoding Indica se o cliente suporta compressão dos dados If-Modified-Since Pedido condicional (recebe resposta 304) User-Agent Assinatura do browser que realiza o pedido Host Diferencia vários sites na mesma máquina (obrigatório) Response headers Header Accept-Ranges Server Descrição Indica se o servidor aceita pedidos em blocos (# bytes ou none) Assinatura do servidor 17

Headers (3) Entity headers (sobre o conteúdo) Header ETag Last-Modified Content-Length Content-Type Descrição Identificador único (gerado pelo servidor) do recurso Altura na qual o recurso foi alterado Número de bytes ocupados pelo corpo (body) da resposta Tipo de conteúdo (text/html, text/plain, etc ) 18

MANUTENÇÃO DE ESTADO EM APLICAÇÕES WEB 19

Manutenção de estado em aplicações Web O protocolo é stateless Os pedidos são independentes e sem relação (mesmo pedidos consecutivos do mesmo cliente na mesma ligação TCP) Como manter uma conversação entre o cliente e o servidor em? Utilizam-se Cookies RFC 2965: State Management Mechanism RFC 2964: Use of State Management 20

Cookies O que são Cookies? Mecanismo que fornece a aplicações servidoras suporte para 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 par nome=valor Range de URLs para o qual o estado é válido Data de validade (para o caso de Cookies persistentes) Como são suportados em? Utilizando headers 21

Headers referentes aos Cookies Sintaxe do header 'Cookie' no pedido Cookie: {<NAME>=<VALUE>;}+ Sintaxe do header 'Set-Cookie' na resposta Set-Cookie: {<NAME>=<VALUE>;}+ [expires=<date>;] [path=<path>;] [domain=<domain_name>;] [secure] Nota: <DATE> -> Wdy, DD-Mon-YYYY HH:MM:SS GMT Exemplo: Thursday 02-Feb-2006 00:00:00 GMT 22

Algumas notas sobre Cookies (1) Uma resposta pode conter múltiplos cabeçalhos Set-Cookie Instâncias com a mesma path e nome, são rescritas tendo precedência a última delas Instâncias com a mesma path mas com nomes diferentes, são adicionadas ao conjunto Definir um Cookie com uma path mais genérica, não remove Cookies com paths mais específicas São enviados todos os mapeamentos para o Cookie, mesmo com paths diferentes Quando enviados para o servidor, os Cookies com path mais específica deverão ser enviados primeiro O campo expires indica ao cliente quando o Cookie "deve" ser removido No entanto o cliente não é obrigado a removê-lo! O cliente pode remover o Cookie antes deste expirar se o número de Cookies exceder os limites internos do cliente 23

Algumas notas sobre Cookies (2) Limites máximos para o número de Cookies que um cliente pode guardar de cada vez: 4 Kb por Cookie 300 Cookies no total 20 Cookies por domínio Para uma aplicação servidora apagar um Cookie no cliente, deverá enviar na resposta um Cookie com o mesmo nome e uma data de expiração passada Os proxys não deverão fazer cache dos cabeçalhos Set-Cookie Se um proxy receber um cabeçalho Set-Cookie deverá propagá-lo para o cliente independentemente do código de resposta ser 304 (Não modificado) ou 200 (Ok) Da mesma forma, se um pedido tiver cabeçalhos Cookie, estes deverão ser propagados pelo proxy, independentemente de ser um pedido condicional (If-modified-since) ou não. 24

Utilizações normais de Cookies Podem ser utilizados para: Criar sessões (conversação) Deixar registo de navegação Deixar registo de preferências do cliente Evitar login (login automático) Não podem (não é possível) ser utilizados para: Aceder ao disco rígido Enviar vírus para o cliente Enviar informação para o servidor sem conhecimento do cliente 25

Exemplos de transacções com Cookies (1) Cliente envia um pedido e recebe a resposta: Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=wednesday, 09-May-1999 23:00:00 GMT (2) Cliente envia um pedido na path '/': Cookie: CUSTOMER=WILE_E_COYOTE (3) Servidor envia resposta Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/ (4) Cliente envia um pedido na path '/': Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001 (5) Servidor envia resposta: Set-Cookie: SHIPPING=EDEX; path=/foo (6) Cliente envia um pedido na path '/': Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001 (7) Cliente envia um pedido na path '/foo': Cookie: SHIPPING=EDEX; CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001 26

Bibliografia @ W3C http://www.w3.org/protocols Hypertext Transfer Protocol -- /1.1 (RFC 2616) http://www.w3.org/protocols/rfc2616/rfc2616.html State Management Mechanism (RFC 2965) ftp://ftp.rfc-editor.org/in-notes/rfc2965.txt Use of State Management (RFC 2964) ftp://ftp.rfc-editor.org/in-notes/rfc2964.txt Aplicações de análise de tráfego Fiddler: http://www.fiddlertool.com/fiddler/ (funciona como proxy) HttpWatch: http://www.httpwatch.com/ (para o IE e Firefox) XMLHttpRequest http://www.w3.org/tr/xmlhttprequest/ 27