Passa al contenuto principale

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

  1. Introduction (Introduzione)

    • 1.1 Requirements Notation
    • 1.2 Syntax Notation
  2. 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
  3. Message Format (Formato del Messaggio)

    • 3.1 Start Line
    • 3.2 Header Fields
    • 3.3 Message Body
  4. Transfer Codings (Codifiche di Trasferimento)

    • 4.1 Chunked Transfer Coding
    • 4.2 Compression Codings
    • 4.3 TE Header Field
    • 4.4 Trailer Header Field
  5. 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
  6. 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
  7. ABNF List Extension (Estensione ABNF per Liste)

  8. IANA Considerations (Considerazioni IANA)

  9. 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:

  1. RFC 7230 - Message Syntax and Routing (questo documento)
  2. RFC 7231 - Semantics and Content
  3. RFC 7232 - Conditional Requests
  4. RFC 7233 - Range Requests
  5. RFC 7234 - Caching
  6. 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

  1. Protocollo stateless - Ogni richiesta viene elaborata in modo indipendente
  2. Connessioni persistenti - HTTP/1.1 usa connessioni persistenti per impostazione predefinita
  3. Chunked Transfer Encoding - Consente di inviare dati senza conoscere la lunghezza totale
  4. Supporto agli intermediari - Supporta proxy, gateway e tunnel
  5. Protocol Upgrade - Supporta il passaggio ad altri protocolli (ad esempio WebSocket)

Considerazioni di Sicurezza

  1. Convalida dell'input - Convalidare e sanificare sempre l'input dell'utente
  2. Limiti di lunghezza - Implementare limiti per la request line e per la lunghezza dei campi header
  3. Uso di HTTPS - Usare la cifratura TLS per le comunicazioni sensibili
  4. Prevenzione del request smuggling - Seguire rigorosamente le regole di parsing dei messaggi
  5. Sicurezza degli intermediari - Gestire con attenzione proxy e gateway
  6. Protezione della privacy - Proteggere le informazioni personali nei log del server

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


Inizia la lettura: comincia da Sezione 1 - Introduction