HyperText Transfer Protocol (HTTP)



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

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

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

O protocolo HTTP. O que é o protocolo HTTP?

1.264 Lição 11. Fundamentos da Web

Redes de Computadores Grupo de Redes de Computadores

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.

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

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

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

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

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)

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

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

Universidade da Beira Interior

Universidade Federal de Mato Grosso

Como se defender utilizando software livre na era da espionagem

Comunicação entre Processos

PHP: Cookies e Sessões

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

Redes de Computadores I

Java, HTTP, CGI e Linguagens de Scripting

APLICAÇÕES E SERVIÇOS WEB

HYPERTEXT TRANSFER PROTOCOL

A Camada de Aplicação

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

REDES DE COMPUTADORES. Prof. Evandro Cantú

Redes de Computadores

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

Redes de Computadores

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

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

Redes de Computadores 1 o Exame

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

Transferência de arquivos (FTP)

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

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

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

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

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

2Arquitetura cliente-servidor

Camada de Aplicação. Prof. Tiago Semprebom. 2: Camada de aplicação 1

Universidade Federal do Rio Grande do Norte

INTRODUÇÃO A REDES DE COMPUTADORES. Alan Nakai

6. Fundamentos HTTP O que é HTTP Métodos

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

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

INTRODUÇÃO ÀS REDES DE COMPUTADORES

Redes de Computadores e a Internet

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

Programação Web Aula 1: Introdução

DNS Domain Name System

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

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

REC- Redes de Computadores. Capítulo 5 Camada de Aplicação

Capítulo 2. Camada de aplicação

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

Rede de Computadores (REC)

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


Desenvolvimento Web Protocolos da Internet

REDES DE COMPUTADORES I 2007/2008 LEIC - Tagus-Park TPC Nº 2. Avaliação sumária da matéria do Capítulo 2

Redes de Computadores I

Redes de Computadores

SMTP x POP3, TCP X UDP, FTP, HTTP RESUMO

Aula 1 Cleverton Hentz

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI)

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

Redes de Computadores I. Sockets e Arquitetura HTTP

Construção de Sites. Introdução ao Universo Web. Prof. Nícolas Trigo

ALCY JOSÉ VIEIRA NETO ALEXANDRE SOHN CINTIA CAVICHIOLO PROTOCOLO HTTP

Modelo e arquitectura do TCP/IP

DNS Domain Name System

Tecnologias Web. Java Servlets

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

Transcrição:

Programação Na Web HyperText Transfer Protocol () António Gonçalves Arquitectura Protocolo de transporte de documentos hypertexto RFC 1945 - Versão 1.0 RFC 2616 - Versão 1.1 O pedido é feito em ASCII e a resposta é do tipo MIME (RFC 822 e rfcs 2045, 2046, 2047, 2048, 2049) O servidor não mantém estado dos clientes (stateless) Servidor recebe pedidos normalmente em TCP-IP (porto 80) cliente servidor Página Web no écran 1 Pedido (GET ) Resposta MIME

Protocolo - Sintaxe <COMMAND> <URL> /1.X <crlf> { <Header>: <Value> <crlf>}* <crlf> [<data>] Sintaxe Exº GET /docu2.html /1.1 Accept: text/plain; text/html; image/gif, *.* User-Agent: Mozilla4.0 (compatible; MSIE 5.0; Windows NT; Dig Ext) Host: www.abc.pt From: montulli@www.cc.ukans.edu * a blank line * Sintaxe /1.X <result-code> [<message>] <crlf> { <Header>: <Value> <crlf>}+ <crlf> [<data>] Exº /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 * a blank line * <HTML><HEAD><TITLE>... </TITLE>...etc. Comandos Comandos sempre suportados GET HEAD POST pede uma página pede apenas o cabeçalho envia dados ao servidor Comandos nem sempre suportados PUT escreve uma página (inverso de GET) DELETE remove uma página LINK estabelece uma ligação entre páginas UNLINK remove uma ligação entre páginas

Códigos de resposta do servidor Tipos de códigos de retorno 2XX - códigos de OK 3XX - recolocação/redireccionamento 4XX - Erro no cliente 5XX - Erro no servidor Alguns 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: */* User-Agent: Lynx/2.2 libwww/2.14 From: montulli@www.cc.ukans.edu 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=/ Resposta: informação sobre o servidor Server: Apache/1.2b7 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

Comando GET Pede um recurso (ficheiro, CGI, etc) Corpo sempre vazio Pedido: GET /index.html /1.1 Connection: Keep-Alive User-Agent: Mozilla/2.02Gold (WinNT; I) Host: www.ora.com Accept: image/gif, image/x-xbitmap, image/jpeg Resposta: /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... corpo do documento... Exemplo: GET bluejay> telnet www.creighton.edu 80 Trying... Connected to parrot.creighton.edu. Escape character is '^]'. GET /~davereed/index.html /1.1 Host: www.creighton.edu /1.1 200 OK Date: Wed, 23 Jan 2002 20:29:50 GMT Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1 mod_fastcgi/2.2.10 Last-Modified: Tue, 22 Jan 2002 06:52:39 GMT ETag: "a9260-18a-39b49837" Accept-Ranges: bytes Content-Length: 394 Content-Type: text/html <HTML> <!--- Dave Reed index.html 1/22/02 --> <!---------------------------------------------------> <HEAD> <TITLE>Dave Reed's Home Page</TITLE> <SCRIPT LANGUAGE="JavaScript"> if (self!=top) top.location.href=self.location.href; </SCRIPT> </HEAD> <FRAMESET COLS="170,*"> <FRAME SRC="menu.html" NAME="menu"> <FRAME SRC="info.html" NAME="main"> </FRAMESET> Resposta do Servidor </HTML>

Exemplo: GET Condicional bluejay> telnet www.creighton.edu 80 Trying... Connected to parrot.creighton.edu. Escape character is '^]'. GET /~davereed/ /1.1 Host: www.creighton.edu If-Modified-Since: Wed, 5 Sep 2001 14:00:00 GMT /1.1 304 Not Modified Date: Wed, 23 Jan 2002 20:36:55 GMT Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1 mod_fastcgi/2.2.10 ETag: "a9260-18a-39b49837" uma vez que o documento não foi modificado desde a data indicada, a página não é enviada pelo servidor (status code 304) HEAD Pedido de informações sobre o documento e não o documento em si. Data da ultima modificação, dimensão, tipo, etc. Corpo sempre vazio Pedido: HEAD /index.html /1.1 Host: www.deec.isel.pt Resposta: /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

Exemplo: HEAD bluejay> telnet www.creighton.edu 80 Trying... Connected to parrot.creighton.edu. Escape character is '^]'. HEAD /~davereed/index.html /1.1 Host: www.creighton.edu servidor não envia a página, envia o cabeçalho /1.1 200 OK Date: Wed, 23 Jan 2002 20:54:23 GMT Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1 mod_fastcgi/2.2.10 Last-Modified: Tue, 22 Jan 2002 06:52:39 GMT ETag: "a9260-18a-39b49837" Accept-Ranges: bytes Content-Length: 394 Content-Type: text/html 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 /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: Content-type: text/html <H1>Query Results</H1> You submitted the following name/value pairs: <ul> <li>org = Academic Computing Services <li>users = 10000 <li>browsers = cello <li>browsers = lynx <li>browsers = xmosaic <li>others = Mac Mosaic, Win Mosaic <li>contact = Michael Grobe grobe@kuhub.cc.ukans.edu </ul>

Cookies O que são Cookies? Mecanismo que permite a aplicações 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, do ponto de vista do servidor. Range de URLs para o qual o estado é válido Sintaxe dos Headers referentes aos Cookies Set- Cookie: : {<NAME>=<VALUE>;}+ [expires=<date>;] [path=<path>;] [domain=<domain_name[ domain=<domain_name>;] [secure[ secure] <DATE> -> Wdy, DD-Mon-YYYY HH:MM:SS GMT Cookie: : {<NAME>=<VALUE>;}+

Algumas notas sobre Cookies Uma resposta pode conter múltiplos Set-Cookie Instancias com a mesma path e nome, são rescritas tendo precedência a ultima delas. Instancias da mesma path mas com nomes diferentes, são adicionados ao conjunto. Definindo um Cookie com uma path mais genérica, não remove Cookies com paths mais específicas. São enviados todos os mapeamentos para um 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. Algumas notas sobre Cookies Limites mínimos para o número de Cookies que um cliente pode guardar de cada vez. 300 Cookies no total 4 Kb por Cookie 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 headers Set-Cookie Se um proxy receber um header Set-Cookie deverá propaga-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 headers Cookie, estes deverão ser propagados por um proxy, independentemente de ser im pedido condicional (If-modofied-since) ou não.

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