Académique Documents
Professionnel Documents
Culture Documents
Caractersticas
- Modelo Requisio/Resposta
- Common Gateway Interface (CGI)
-
Caractersticas
Hypertext Transfer Protocol (HTTP)
Caractersticas gerais
Caractersticas
Exemplo (http://www.eu.com.br/index.html)
Abre conexo TCP-IP na porta 80
com servidor
GET / index.html HTTP / 1.0
Browser
Conexo TCP-IP
Fecha conexo TCP-IP
www.eu.com.br
Servidor
Web
Requisio HTTP
Sintaxe geral de uma requisio HTTP (RFC822):
comando /uri-recurso HTTP/verso
{cabealho: valor}n
<linha em branco>
dados
A primeira linha chamada linha de comando
Podem haver vrios cabealhos de requisio
Alguns comandos HTTP: GET, POST, HEAD,
PUT, DELETE, outros
Requisio HTTP
Comando GET
Solicita ao servidor um recurso (pgina HTML, figura
GIF, documento do word, etc.)
A URI do recurso pode conter dados separados por '?
Exemplo: /index.html?dado1=valor1&dado2=valor2
Comando POST
Usado para enviar dados para o servidor (p.e., upload
de arquivo, dados de formulrio HTML)
Ao contrrio do GET, os dados seguem aps a linha
em branco que separa cabealhos dos dados
Requisio HTTP
Exemplo (http://www.eu.com.br/index.html)
www.eu.com.br
Browser
Servidor
Web
URIs e URLs
URI = URL + URN
URI = Identificador Uniforme de Recursos
URL = Localizador Uniforme de Recursos
URN = Nome Uniforme de Recurso
URIs e URLs
Exemplos de URLs:
http://java.sun.com/docs/servlets/servlets.html
http://java.sun.com/docs/servlets/
http://java.sun.com/cgi-bin/reverse?string=fred
http://localhost:8080/fred/servlets/ListaServlet?tipo
=superior&curso=334
Formato x-www-form-urlencoded
Formato para transferncia de dados no HTTP
Usado para codificar os dados produzidos pelo
cliente
Sintaxe
No pode haver nenhum espao em branco nos dados
Dados so agrupados em pares nome=valor
Pares so separados por &
Espaos em branco so codificados com +
Caracteres de 8 bits so codificados com %HH, onde
HH o cdigo hexadecimal do caractere
Requisio HTTP
Exemplo (http://www.eu.com.br/cgi-bin/login)
www.eu.com.br
POST /cgi-bin/login HTTP/1.0
accept:text/html
user-agent: IE/6.0
if-modified-since: Sat, 24-01
Browser
user=maria&senha=123abc
Servidor
Web
Resposta HTTP
Sintaxe geral de uma resposta HTTP (RFC-822):
HTTP/verso cdigo mensagem
{cabealho: valor}n
<linha em branco>
dados
A primeira linha chamada linha de status
Podem haver vrios cabealhos de resposta
Os dados podem ser texto (pgina HTML) ou
binrio (figura GIF)
Resposta HTTP
Exemplo (http://www.eu.com.br/index.html)
www.eu.com.br
HTTP/1.0 200 Ok
date: Sat, 24 Jan 2004 23:58:
content-type: text/html
set-cookie: user=fred
Browser
<html><head><title>Al</title
<body>
<h1>Bem vindo minha homepa
Servidor
Web
Resposta HTTP
Toda resposta HTTP deve ter um cabealho
content-type
Ele indica o tipo MIME do recurso enviado
Protocolo HTTP multimdia
Resposta HTTP
inum = 11
qtty = 1
fname = Maria
lname = Joao
minit = C. G.
addr = Av Argemiro de Figueiredo, 985
cc = Visa
ccn = 1234567
ccn = 1234567
Browser
inum=11&qtty=1&price=300&fna
me=Maria&lname=Joao&minit=C
%C3+G%C3&addr=Av+Argemiro
+Figueiredo,+985&cc=visa&ccn=
1234567&ccn=1234567
www.eu.com.br
Servidor
Web
Resposta HTTP
<form method="POST"
action="http://www.abc.com/cgi-bin/grava">
Item Number: <input type="text"
name="inum"><br>
Quantity: <input type="text"
name="qtty"><br>
... <! outros elementos-->
POST /cgi-bin/grava
HTTP/1.0
<input type="submit"
value="Submit
Order">
accept:text/html
</form>
user-agent: IE/6.0
content-type:application/x-www
inum=11&qtty=1&price=300&fname=Maria&lname=Joao&
minit=C%C3+G%C3&addr=Av+Argemiro
+Figueiredo,+985&cc=visa&ccn=1234567&ccn=1234567
Forma
O programa executa no lado do servidor
Pode ser escrito em qualquer linguagem de
programao
Cada requisio pelo programa cria um novo
processo idntico na memria (ineficiente)
Browser
inum=11&qtty=1&price=300&fna
me=Maria&lname=Joao&minit=C
%C3+G%C3&addr=Av+Argemiro
+Figueiredo,+985&cc=visa&ccn=
1234567&ccn=1234567
Script grava
www.eu.com.br
Servidor
Web
Servidor
Web
Grava
Servidor
Web
Grava
QUERY_STRING
inum=11&qtty=1&price=300&fna
me=Maria&lname=Joao&minit=C
%C3+G%C3&addr=Av+Argemiro
+Figueiredo,+985&cc=visa&ccn=
1234567&ccn=1234567