Hypertext Transfer Protocol (HTTP/1.1): Sintassi e Instradamento dei Messaggi
- Stato: Proposed Standard
- Pubblicato: June 2014
- Stream: IETF
- Aggiorna: RFC2817, RFC2818
- Sostituisce: RFC2145, RFC2616
- Sostituito da: RFC9110, RFC9112
- Errata: Nessun errata
Informazioni Sul Documento
- RFC Number: 7230
- Title: HTTP/1.1: Message Syntax and Routing
- Published: June 2014
- Authors: R. Fielding (Adobe), J. Reschke (greenbytes)
- Status: Standards Track
- Obsoletes: RFC 2616, RFC 2145
- Updates: RFC 2817, RFC 2818
Abstract
L'Hypertext Transfer Protocol (HTTP) è un protocollo stateless a livello di applicazione per sistemi informativi ipertestuali distribuiti e collaborativi.
Questo documento fornisce una panoramica dell'architettura HTTP e della terminologia associata, definisce gli schemi Uniform Resource Identifier (URI) "http" e "https", definisce la sintassi dei messaggi HTTP/1.1 e i requisiti di parsing, e descrive le relative considerazioni di sicurezza per le implementazioni.
Indice
Sezioni Principali
-
Introduction (Introduzione)
- 1.1 Requirements Notation
- 1.2 Syntax Notation
-
Architecture (Architettura)
- 2.1 Client/Server Messaging
- 2.2 Implementation Diversity
- 2.3 Intermediaries
- 2.4 Caches
- 2.5 Conformance and Error Handling
- 2.6 Protocol Versioning
- 2.7 Uniform Resource Identifiers
-
Message Format (Formato del Messaggio)
- 3.1 Start Line
- 3.2 Header Fields
- 3.3 Message Body
-
Transfer Codings (Codifiche di Trasferimento)
- 4.1 Chunked Transfer Coding
- 4.2 Compression Codings
- 4.3 TE Header Field
- 4.4 Trailer Header Field
-
Message Routing (Instradamento dei Messaggi)
- 5.1 Identifying a Target Resource
- 5.2 Connecting Inbound
- 5.3 Request Target
- 5.4 Host Header Field
- 5.5 Effective Request URI
- 5.6 Associating a Response to a Request
- 5.7 Message Forwarding
-
Connection Management (Gestione delle Connessioni)
- 6.1 Connection Header Field
- 6.2 Establishment
- 6.3 Persistence
- 6.4 Concurrency
- 6.5 Failures and Timeouts
- 6.6 Tear-down
- 6.7 Upgrade Header Field
-
ABNF List Extension (Estensione ABNF per Liste)
-
IANA Considerations (Considerazioni IANA)
-
Security Considerations (Considerazioni di Sicurezza)
Appendici
- Appendix A - HTTP Version History
- Appendix B - Collected ABNF
- References (Riferimenti)
Serie di Specifiche HTTP/1.1
RFC 7230 è la prima parte della serie di specifiche HTTP/1.1:
- RFC 7230 - Message Syntax and Routing (questo documento)
- RFC 7231 - Semantics and Content
- RFC 7232 - Conditional Requests
- RFC 7233 - Range Requests
- RFC 7234 - Caching
- RFC 7235 - Authentication
Concetti Fondamentali
Termini Chiave
- Client: programma che stabilisce una connessione per inviare richieste HTTP
- Server: programma che accetta connessioni per servire richieste HTTP
- User Agent: programma client che avvia le richieste (browser, crawler, ecc.)
- Origin Server: programma che può generare risposte autorevoli
- Intermediary: proxy, gateway o tunnel
- Cache: archivio locale di risposte precedenti
Struttura dei Messaggi HTTP
HTTP-message = start-line
*( header-field CRLF )
CRLF
[ message-body ]
Esempio di Richiesta
GET /hello.txt HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Language: it
Esempio di Risposta
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Content-Length: 51
Content-Type: text/plain
Hello World! My payload includes a trailing CRLF.
Caratteristiche Importanti
- Protocollo stateless - Ogni richiesta viene elaborata in modo indipendente
- Connessioni persistenti - HTTP/1.1 usa connessioni persistenti per impostazione predefinita
- Chunked Transfer Encoding - Consente di inviare dati senza conoscere la lunghezza totale
- Supporto agli intermediari - Supporta proxy, gateway e tunnel
- Protocol Upgrade - Supporta il passaggio ad altri protocolli (ad esempio WebSocket)
Considerazioni di Sicurezza
- Convalida dell'input - Convalidare e sanificare sempre l'input dell'utente
- Limiti di lunghezza - Implementare limiti per la request line e per la lunghezza dei campi header
- Uso di HTTPS - Usare la cifratura TLS per le comunicazioni sensibili
- Prevenzione del request smuggling - Seguire rigorosamente le regole di parsing dei messaggi
- Sicurezza degli intermediari - Gestire con attenzione proxy e gateway
- Protezione della privacy - Proteggere le informazioni personali nei log del server
Avviso di Copyright
Copyright © 2014 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions.
Risorse Correlate
- Official Document: https://www.rfc-editor.org/rfc/rfc7230.html
- Errata: https://www.rfc-editor.org/errata_search.php?rfc=7230
Inizia la lettura: comincia da Sezione 1 - Introduction