Applicazioni Web, HTTP e REST. Matteo Vaccari http://matteo.vaccari.name/ Milano XP User Group, 3 ottobre 2007

Documenti analoghi
Applicazioni Web 2013/14

Applicazioni Web 2014/15

url uniform resource locator

Architetture Web Protocolli di Comunicazione

Protocollo HTTP. Alessandro Sorato

Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP

OSOR. Applicazioni di Rete

Stack protocolli TCP/IP

Architetture Applicative Il Web

Web e HTTP. path name. host name Realizzato da Roberto Savino.

Il Protocollo HTTP e la programmazione di estensioni Web

Programma del Corso. Laboratorio

Siti web centrati sui dati (Data-centric web applications)

Applicazioni web centrati sui dati (Data-centric web applications)

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 2

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont)

Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web.

Attacchi Web - Introduzione alla sicurezza nelle applicazioni Web

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Il World Wide Web. Il Servizio World Wide Web (WWW) WWW WWW WWW WWW. Storia WWW: obbiettivi WWW: tecnologie Le Applicazioni Scenari Futuri.

Esempi di applicazioni internet. WEB Trasferimento File Posta Elettronica Sistema dei nomi di dominio (DNS)

Il World Wide Web. Marco Porta - CIM: Web Design & Technologies

Protocolli applicativi: FTP

INFORMATICA DISTRIBUITA. lez 6 World Wide Web (cont)

Tito Flagella - Il protocollo HTTP

TCP/IP: INDIRIZZI IP SIMBOLICI

Ipertesto (testo + link a risorse)

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Introduzione alle applicazioni di rete

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Introduzione. Java HTTP. G. Prencipe

Internet e Tecnologia Web

Servizi di rete e web. Prof. Maurizio Naldi A.A. 2015/16

Il protocollo HTTP e HTTPS

Programmazione in Rete

Assignment (1) - Varie

Elementi di Sicurezza e Privatezza Laboratorio 6 - Vulnerabilità di applicazioni Web (1) Chiara Braghin chiara.braghin@unimi.it!

Protocolli per il Web. Impianti Informatici. Protocolli applicativi

Esercizio 1 : HTTP. Soluzione Esercizio 1 : HTTP

Seminario WebServer. Contenuti. Come funziona la navigazione web. Struttura Client/Server. WebServer: Apache e IIS

appunti delle lezioni Architetture client/server: applicazioni client

Introduzione a Internet e World Wide Web

Introduzione ad HTTP WWW. Fabio Vitali

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Infrastrutture e Protocolli per Internet Laboratorio 1

Riccardo Solimena e Stefano Dellafiore Javaday IV Roma 30 gennaio 2010

PROTOCOLLI APPLICATIVI PER INTERNET

Architettura client-server

Il Protocollo HTTP e il WWW

Telematica II 7. Introduzione ai protocolli applicativi

Le Reti Informatiche

@2011 Politecnico di Torino. Pag. 1. Architettura distribuita. Architetture Client/Server. Architettura centralizzata. Architettura distribuita

. SMTP, POP, IMAP. mail server. smtp [RFC 821] Tre componenti: user agent mail server simple mail transfer protocol: smtp

WEB: Architettura Client Server

Ipertesto. Reti e Web. Ipertesto. Ipertesto. Ipertestualità e multimedialità

Posta Elettronica e Web

Protocolli applicativi basati su TCP/IP

Lucidi a cura di Andrea Colombari, Carlo Drioli e Barbara Oliboni. Lezione 4

Reti di Calcolatori. Vantaggi dell uso delle reti. Cosa è una rete? Punto di vista logico: sistema di dati ed utenti distribuito

Web (1) Internet. Elementi di Sicurezza e Privatezza Lezione 9 Web Security (1) Chiara Braghin. chiara.braghin@unimi.it! 20/11/12. browser.

HTTP. Hyper Text Transfer Protocol HTTP

Università di Verona, Facoltà di Scienze MM.FF.NN. Insegnamento di Reti di Calcolatori. Applicazioni TCP/IP. Davide Quaglia

A. A Introduzione alle Reti di Calcolatori e Architettura del World Wide Web

Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP

Lezione n 1! Introduzione"

Livello cinque (Livello application)

Infrastrutture e Protocolli per Internet Laboratorio 1

Web e Server-side Computing: Richiami sulla tecnologia Web e FORM HTML

World Wide Web. Web e Server-side Computing: Richiami sulla tecnologia Web e FORM HTML. Il Successo del Web. Protocolli di accesso

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Introduzione ai Web Services Alberto Polzonetti

Corso di Laurea Specialistica in Ingegneria Informatica Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni

Applicazioni e protocolli a livello applicazione

Hackathon Developers User Guide

Livello Applicazione. Davide Quaglia. Motivazione

Sicurezza delle applicazioni web: protocollo HTTP

Il protocollo HTTP (cont.)

Corso di Informatica Modulo T3 B2 - Database in rete

Dal protocollo IP ai livelli superiori

Omeka PURL Plugin. Torino, 30 settembre Emilio Remogna

Applicazioni e protocolli a livello applicazione

Corso di Applicazioni Telematiche

Università degli Studi di Bergamo

Reti di Calcolatori. Il Livello delle Applicazioni

TECN.PROG.SIST.INF. Livello APPLICAZIONE - TELNET. Roberta Gerboni

10110 Reti di Calcolatori IL LIVELLO APPLICAZIONI: DNS, FTP

Oreste Signore, Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, Pisa

Reti di Calcolatori:

1 Vincenzo de Stefano SAP e Servizi Web

Il World Wide Web: nozioni introduttive

prof. Mario Dalessandro

Architetture Applicative Il Web

Tutto il VoIP in 45 minuti!! Giuseppe Tetti. Ambiente Demo. VoIP IP PBX SIP

Internet Architettura del www

Introduzione alla rete Internet

Livello Applicazione. Davide Quaglia. Motivazione

Corso LAMP. Linux Apache Mysql Php

Transcript:

Applicazioni Web, HTTP e REST Matteo Vaccari http://matteo.vaccari.name/ Milano XP User Group, 3 ottobre 2007 1

Applicazioni Web? Applicazione Web: un'applicazione clientserver in cui il client è un semplice web browser 2

Perché Web Applications? Portabilità Niente da installare sul client Centralizzazione Le applicazioni Web sono oggi la maniera standard di sviluppare un applicazione 3

La ragnatela globale Tim Berners-Lee inventa il World Wide Web circa 1989 Ipertesto: testo con riferimenti (link) ad altri testi Prima del web: formati di documenti incompatibili sistemi operativi incompatibili documenti inaccessibili Con il web: documenti accessibili attraverso diversi sistemi operativi diverse applicazioni diverse reti 4

Il Web è client-server Client: browser o script open a TCP connection send HTTP request receive response; parse; present/use Server: web server + docs, scripts listen on port 80 TCP answer concurrent requests serve documents or execute scripts 5

Il Web è basato su standard promulgati dal W3 Consortium (http://www.w3.org) HTTP URI HTML 6

RFC2616 The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, protocol... A feature of HTTP is the typing and negotiation of data representation,... 7

HTTP 0.9 Client request GET /hello.txt Server response Hello, world! 8

HTTP 1.1 Client request GET /hello.txt HTTP/1.1 host: www.example.com Server response HTTP/1.1 200 OK Content-Type: text/plain Hello, world! 9

URI Uniform Resource Identifier Il nome di una risorsa 10

Che cos è una risorsa? La versione 22.1 del software rilasciato L ultima versione del software rilasciato Il primo post del blog del 2 ottobre 2006 Il post dedicato a RESTful Web Services Una mappa di Varese Informazioni sui facoceri Il primo numero primo > 1024 I primi 5 numeri primi > 1024 La lista dei bachi aperti Esempi da Richardson, Ruby RESTful Web Services 11

Esempi di URI http://www.example.com/software/releases/22.1.tgz http://www.example.com/software/releases/latest.tgz http://www.example.com/blog/2007/10/2/0 http://www.example.com/blog/restful-web-services http://www.example.com/maps/it/va http://www.example.com/search?q=facoceri http://www.example.com/nextprime/1024 http://www.example.com/next-5-primes/1024 http://www.example.com/bugs/by-state/open Esempi da Richardson, Ruby RESTful Web Services 12

Addressability Un applicazione Web è indirizzabile se espone gli aspetti interessanti dei suoi dati come risorse 13

URI scheme:scheme-specific-part mailto:vaccari@pobox.com http://www.example.com/pages/hello.txt telnet://192.0.2.16:80/ news:rec.arts.int-fiction 14

http uri http://<host><path> http://www.example.com/ scheme: http host: www.example.com path: / 15

http uri http://<host><path> http://www.example.com/books/list.html scheme: http host: www.example.com path: /books/list.html 16

http uri http://<host><path>[<query>] http://www.example.com/search?q=facoceri&start=10 scheme: http host: www.example.com path: /search query: q=facoceri&start=10 17

RFC2616 The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, protocol... A feature of HTTP is the typing and negotiation of data representation,... 18

Application-level HTTP TCP IP Network-specific link Application layer Transport layer Network layer Data link layer 19

Application-level HTTP Application layer SMTP TCP Transport layer TCP IP Network layer IP Network-specific Data link layer Network-specific 20

Stateless http://www.google.com/search?q=facoceri&start=15 21

22

Http Messages Client request Server response GET /hello.txt HTTP/1.1 Start line HTTP/1.1 200 OK Host: www.example.com Accept: text/* Accept-language: en, it Headers Content-type: text/plain Content-length: 14 Body Hello, world! 23

GET /books/list.html HTTP/1.1 Host: localhost:3001 User-Agent: Mozilla/5.0 (Intel Mac OS X; en-us; rv:1.8.0.7) Gecko Accept: text/xml,application/xml,text/html;q=0.9,*/* Accept-Language: en-us,en Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8 24

HTTP/1.1 200 OK Date: Fri, 29 Sep 2006 17:00:03 GMT Content-Type: text/html; charset=utf-8 Server: WEBrick/1.3.1 (Ruby/1.8.4/2005-12-24) Content-Length: 5552 <html> <head> <title>la lista dei libri</title> </head> <body>... 25

Esercizio Osservare richieste e risposte http con netcat 26

Status codes 1xx 2xx 3xx 4xx 5xx informational success redirection client error server error 27

Per esempio 200 OK 303 See Other 410 Unauthorized 404 Not Found 500 Internal Server Error 28

Request line GET /foo/bar.html HTTP/1.1 method 29

Http methods GET Get a document from the server. POST Send data to the server for processing. HEAD Get just the headers for a document from the server. PUT Store the body of the request on the server. DELETE Remove a document from the server. 30

Safe methods Un metodo è sicuro (safe) se non provoca effetti visibili sullo stato dell applicazione 31

GET vs. POST GET safe bookmarkable query string nella URI POST not safe not bookmarkable query string nel BODY 32

Get vs Post Get: appropriato per leggere informazioni Post: appropriato per modificare informazioni 33

Esercizio: Fabbricare una form html ed osservare la richiesta effettuata tramite netcat 34

Redirections 301 Moved Permanently 302 Found 303 See Other 35

GET /books/new 200 OK... <form action='/books/new'> </form> 36

GET /books/new Insert new book Title Text Field Author Text Field OK 200 OK... <form action='/books/new'> </form> 37

GET /books/new Insert new book Title Text Field Author Text Field OK 200 OK... <form action='/books/new'> </form> POST /books/new... title=ragione e sentimento author=jane Austen 38

GET /books/new Title Insert new book Text Field Author Text Field OK POST /books/new... title=ragione e sentimento author=jane Austen 200 OK... <form action='/books/new'> </form> 303 See other Location: /books/show/1234 39

GET /books/new Title Insert new book Text Field Author Text Field OK POST /books/new... title=ragione e sentimento author=jane Austen 200 OK... <form action='/books/new'> </form> 303 See other Location: /books/show/1234 GET /books/show/1234 40

GET /books/new Title Insert new book Text Field Author Text Field OK POST /books/new... title=ragione e sentimento author=jane Austen GET /books/show/1234 200 OK... <form action='/books/new'> </form> 303 See other Location: /books/show/1234 200 OK... <html>...</html> 41

GET /books/new Title Insert new book Text Field Author Text Field OK POST /books/new... title=ragione e sentimento author=jane Austen GET /books/show/1234 Ragione e sentimento 200 OK... <form action='/books/new'> </form> 303 See other Location: /books/show/1234 200 OK... <html>...</html> 42

Mime types text/plain text/html image/gif image/jpeg application/pdf <primary type>/<subtype> 43

Mime types text/html; charset=utf-8 <primary type>/<subtype>; <parameters> 44

Il browser non usa il suffisso file /var/www/cgi-bin/random-picture #!/bin/bash file=/tmp/g.de_chirico_la_torre_rossa.jpeg echo "Content-type: image/jpeg" echo "" cat $file http://localhost/random-picture 45

46

Esercizio 1. Installare lo script di prima e farlo funzionare 2. Modificarlo per fargli restituire un immagine diversa ogni volta 47

Roy Fielding rfc2616 Hypertext Transfer Protocol -- HTTP/1.1 48

World-Wide-Web HTTP (X)HTML URL 49

REpresentational State Transfer UNIVERSITY OF CALIFORNIA, IRVINE Architectural Styles and the Design of Network-based Software Architectures DISSERTATION submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in Information and Computer Science by Roy Thomas Fielding 2000 50

Nomi mailto:vaccari@pobox.com http://matteo.vaccari.name/blog http://matteo.vaccari.name/blog/123 http://matteo.vaccari.name/blog/2007-05 51

GET /blog HTTP/1.1 Host: matteo.vaccari.name Accept: text/html 52

GET /blog HTTP/1.1 Host: matteo.vaccari.name Accept: application/rss+xml 53

Verbi GET POST PUT DELETE find create update destroy SELECT INSERT UPDATE DELETE 54

Tanti standard obsoleti RMI CORB A SOAP DCOM WS-* OSF DCE 55

RPC s = Student.find(11245) s.addcourse( Applicazioni Web, 2007-05-28, 30/30 ) 56

REST s = Student.find(11245) c = Course.find( Applicazioni Web ) Vote.create( :date => 2007-05-28, :vote => 30/30, :student => s, :course => c) 57