Passa al contenuto principale

RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

  • Stato: Proposed Standard
  • Pubblicato: June 2014
  • Stream: IETF
  • Aggiorna: RFC2817
  • Sostituisce: RFC2616
  • Sostituito da: RFC9110
  • Errata: Nessun errata

Sommario (Abstract)​

L'Hypertext Transfer Protocol (HTTP) è un protocollo stateless a livello applicativo per sistemi informativi ipertestuali distribuiti e collaborativi. Questo documento definisce la semantica dei messaggi HTTP/1.1, come espressa dai metodi di richiesta, campi di intestazione della richiesta, codici di stato della risposta e campi di intestazione della risposta, insieme al payload dei messaggi (metadati e contenuto del corpo) e meccanismi per la negoziazione del contenuto.


Indice (Table of Contents)​

Sezioni Principali (Core Sections)​

Appendici (Appendices)​


Copyright (c) 2014 IETF Trust e le persone identificate come autori del documento. Tutti i diritti riservati.



Caratteristiche Principali (Key Features)​

Proprietà dei Metodi HTTP (HTTP Method Properties)​

Questo documento definisce tre proprietà fondamentali per i metodi HTTP:

  1. Metodi Sicuri (Safe Methods): Operazioni di sola lettura che non modificano lo stato del server
  2. Metodi Idempotenti (Idempotent Methods): Più richieste identiche hanno lo stesso effetto di una singola richiesta
  3. Metodi Memorizzabili in Cache (Cacheable Methods): Risposte che possono essere memorizzate e riutilizzate

Riepilogo dei Metodi (Method Summary)​

MetodoSicuroIdempotenteCacheable
GET✅✅✅
HEAD✅✅✅
POST❌❌⚠️
PUT❌✅❌
DELETE❌✅❌
CONNECT❌❌❌
OPTIONS✅✅❌
TRACE✅✅❌


Glossary (Glossario)​

Concetti fondamentali​

Resource (Risorsa)​

Concetto astratto di informazione, qualsiasi cosa possa essere identificata da un URI. Una risorsa può essere un documento, un'immagine, un servizio, una persona o un concetto astratto.

Esempi:

  • https://api.example.com/users/123 - Risorsa utente
  • https://example.com/logo.png - Risorsa immagine

Representation (Rappresentazione)​

Informazioni sullo stato di una risorsa in un momento specifico, composte da dati e metadati che descrivono i dati.

Esempio:

Content-Type: application/json
Content-Language: it

{"id": 123, "name": "Mario Rossi"}

User Agent (Agente utente)​

Programma client che avvia richieste HTTP, come browser, app mobili o strumenti da riga di comando.

Esempi: Browser, curl, app mobile

Origin Server (Server di origine)​

Fonte autoritativa di una risorsa, server in grado di fornire la rappresentazione finale di una risorsa.


Attributi del metodo​

Safe Method (Metodo sicuro)​

Operazione di sola lettura che non richiede né si aspetta di modificare lo stato del server.

Metodi sicuri: GET, HEAD, OPTIONS, TRACE

Idempotent Method (Metodo idempotente)​

Metodo in cui l'effetto di più richieste identiche è lo stesso di una singola richiesta.

Metodi idempotenti: GET, HEAD, PUT, DELETE, OPTIONS, TRACE

Cacheable Method (Metodo memorizzabile nella cache)​

Metodo le cui risposte possono essere memorizzate e riutilizzate in richieste successive.

Metodi memorizzabili nella cache: GET, HEAD, POST (condizionale)


Negoziazione del contenuto​

Proactive Negotiation (Negoziazione proattiva)​

Il client specifica le preferenze tramite intestazioni di richiesta, il server seleziona la migliore rappresentazione.

Intestazioni di richiesta: Accept, Accept-Language, Accept-Encoding, Accept-Charset

Reactive Negotiation (Negoziazione reattiva)​

Il server fornisce più scelte, il client seleziona la rappresentazione appropriata.

Codice di stato: 300 Multiple Choices

Content Negotiation (Negoziazione del contenuto)​

Meccanismo per selezionare la migliore rappresentazione tra più rappresentazioni della stessa risorsa.


Campi intestazione​

Representation Metadata (Metadati di rappresentazione)​

Campi intestazione che descrivono i dati di rappresentazione.

Esempi: Content-Type, Content-Encoding, Content-Language, Content-Location

Request Modifiers (Modificatori di richiesta)​

Campi intestazione che modificano la semantica della richiesta.

Esempi: If-Modified-Since, If-None-Match, Range

Response Control Data (Dati di controllo della risposta)​

Campi intestazione che controllano l'elaborazione della risposta.

Esempi: Age, Cache-Control, Expires, Vary


Terminologia dei codici di stato​

1xx Informational (Informativo)​

Risposta temporanea che indica che la richiesta è stata ricevuta e l'elaborazione continua.

Esempi: 100 Continue, 101 Switching Protocols

2xx Successful (Successo)​

La richiesta è stata ricevuta, compresa e accettata con successo.

Esempi: 200 OK, 201 Created, 204 No Content

3xx Redirection (Reindirizzamento)​

Sono necessarie ulteriori azioni per completare la richiesta.

Esempi: 301 Moved Permanently, 302 Found, 304 Not Modified

4xx Client Error (Errore client)​

La richiesta contiene errori di sintassi o non può essere completata.

Esempi: 400 Bad Request, 404 Not Found, 403 Forbidden

5xx Server Error (Errore server)​

Il server non è riuscito a completare una richiesta valida.

Esempi: 500 Internal Server Error, 503 Service Unavailable


Componenti del messaggio​

Message (Messaggio)​

Unità di base della comunicazione HTTP, composta da intestazioni e un corpo del messaggio opzionale.

Tipi: Request Message (Messaggio di richiesta), Response Message (Messaggio di risposta)

Header Field (Campo intestazione)​

Metadati nel messaggio, formato field-name: field-value.

Esempio:

Content-Type: application/json
Content-Length: 123

Message Body (Corpo del messaggio)​

I dati effettivamente trasferiti.

Payload (Carico utile)​

Dati trasferiti in una richiesta o risposta e i loro metadati.


Relativo alla cache​

Fresh (Fresco)​

La risposta nella cache è entro il suo periodo di validità e può essere utilizzata direttamente senza riconvalida.

Stale (Obsoleto)​

La risposta nella cache è scaduta e richiede riconvalida o acquisizione di una nuova risposta.

Cache-Control (Controllo cache)​

Direttive per controllare il comportamento della cache.

Esempi:

Cache-Control: max-age=3600
Cache-Control: no-cache
Cache-Control: private

Relativo alla connessione​

Connection (Connessione)​

Connessione a livello di trasporto tra client e server.

Persistent Connection (Connessione persistente)​

Connessione che può essere utilizzata per più scambi richiesta/risposta.

HTTP/1.1: Connessione persistente per impostazione predefinita


Altri termini​

URI (Uniform Resource Identifier)​

Identificatore di risorsa uniforme per identificare le risorse.

Formato: scheme://authority/path?query#fragment

Esempio: https://api.example.com/users?page=1

Media Type (Tipo di media)​

Formato di rappresentazione della risorsa, anche chiamato tipo MIME.

Formato: type/subtype[;parameter=value]

Esempi: application/json, text/html; charset=utf-8

Quality Value (Valore di qualità)​

Valore numerico che indica il grado di preferenza, intervallo 0.0-1.0.

Esempio: Accept: text/html, application/json;q=0.9

Payload Too Large (Carico utile troppo grande)​

Il corpo del messaggio di richiesta o risposta supera la dimensione che il server è disposto o in grado di elaborare.

Codice di stato: 413 Payload Too Large


Abbreviazioni​

AbbreviazioneNome completoItaliano
HTTPHypertext Transfer ProtocolProtocollo di trasferimento ipertestuale
URIUniform Resource IdentifierIdentificatore di risorsa uniforme
URLUniform Resource LocatorLocalizzatore di risorsa uniforme
MIMEMultipurpose Internet Mail ExtensionsEstensioni di posta Internet multiuso
ABNFAugmented Backus-Naur FormForma di Backus-Naur aumentata
IANAInternet Assigned Numbers AuthorityAutorità per l'assegnazione dei numeri Internet
RFCRequest for CommentsRichiesta di commenti
IETFInternet Engineering Task ForceTask force di ingegneria Internet

Ritorna: Pagina iniziale RFC 7231