1. Introduction (Introduzione)
L'Hypertext Transfer Protocol (Protocollo di trasferimento ipertestuale, HTTP) è un protocollo stateless a livello applicativo di tipo richiesta/risposta che utilizza una semantica estensibile e payload di messaggi auto-descrittivi per un'interazione flessibile con sistemi informativi ipertestuali basati su rete. Questo documento è la Parte 2 della specifica in sette parti che definisce il protocollo denominato "HTTP/1.1" e, nel suo insieme, rende obsoleta la RFC 2616.
HTTP fornisce un'interfaccia uniforme per interagire con una risorsa (Section 2), indipendentemente dal suo tipo, natura o implementazione, tramite la manipolazione e il trasferimento di rappresentazioni (Section 3).
La semantica HTTP include le intenzioni definite da ciascun metodo di richiesta (Section 4), le estensioni a tale semantica che potrebbero essere descritte nei campi di intestazione della richiesta (Section 5), il significato dei codici di stato per indicare una risposta leggibile dalla macchina (Section 6), e altri dati di controllo e metadati delle risorse che potrebbero essere forniti nei campi di intestazione della risposta (Section 7).
Questo documento definisce la semantica delle richieste e risposte HTTP e i campi di intestazione associati che forniscono tale semantica. Altre parti della specifica HTTP/1.1 definiscono come trasmettere un messaggio (Parte 1 - Message Syntax and Routing), richieste condizionali e controllo della cache (Parte 4 - Conditional Requests), richieste di intervallo (Parte 5 - Range Requests) e autenticazione (Parte 7 - Authentication).
1.1. Conformance and Error Handling (Conformità e Gestione degli Errori)
Le parole chiave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto in [RFC2119].
I criteri di conformità e le considerazioni relative alla gestione degli errori sono definiti nella Section 2.5 di [RFC7230].
1.2. Syntax Notation (Notazione Sintattica)
Questa specifica utilizza la notazione Augmented Backus-Naur Form (ABNF) di [RFC5234] con un'estensione di lista, definita nella Section 7 di [RFC7230], che consente una definizione compatta di elenchi separati da virgole utilizzando un operatore '#' (simile a come l'operatore '*' indica la ripetizione). L'Appendice B descrive le regole importate da altri documenti. L'Appendice C mostra la grammatica raccolta con tutti gli operatori di lista espansi in notazione ABNF standard.
Questa specifica utilizza i termini "character", "character encoding scheme", "charset" e "protocol element" come sono definiti in [RFC6365].