Cos'e HTTP 205 Reset Content
Il codice di stato HTTP 205 Reset Content appartiene alla famiglia delle risposte di successo (2xx) ed e definito dalla RFC 9110. Indica al client che la richiesta e stata elaborata correttamente, ma che la vista corrente dell'utente deve essere resettata, tipicamente svuotando il form appena inviato. A differenza del 200 OK, il 205 non ha un body di risposta utilizzabile per aggiornare la pagina: lo standard impone esplicitamente Content-Length zero o trasferimento chunked terminato immediatamente.
Differenza tra 204 No Content e 205 Reset Content
I due codici sembrano simili ma hanno semantiche diverse e profondamente diverse:
- 204 No Content: il client deve mantenere la vista corrente così com'e, conservando lo stato dei campi compilati.
- 205 Reset Content: il client deve ripristinare la vista, cancellando i campi compilati e riportando lo stato iniziale.
Questa distinzione e fondamentale quando si progettano API che alimentano form interattivi o terminali di data entry. Confondere i due codici porta a UX inconsistenti dove l'utente non capisce se l'operazione e andata a buon fine o se deve ricompilare manualmente.
Scenari di utilizzo tipici
Il 205 trova impiego in contesti come:
- Inserimento dati ripetuto: applicazioni di magazzino o cassa che chiedono all'operatore di compilare lo stesso modulo molte volte (codice prodotto, quantità, prezzo), uno dopo l'altro.
- Sondaggi e form di feedback: dopo l'invio di una risposta, il modulo viene ripulito per ricevere il prossimo input dall'utente o da un'altro intervistato.
- Interfacce di amministrazione: dashboard interne dove un singolo form genera molte voci consecutive, come ticket di supporto o note interne.
- Terminali POS: dopo aver registrato una vendita, l'interfaccia si resetta per la prossima transazione.
- Sistemi di voto/polling: ogni voto deve ripulire la scheda elettronica per il prossimo elettore.
Esempio di risposta HTTP 205
HTTP/1.1 205 Reset Content
Content-Length: 0
Date: Mon, 29 Jun 2026 10:00:00 GMT
Server: nginx/1.24
Cache-Control: no-store
Il valore di Content-Length deve essere zero oppure il body deve essere assente: la specifica vieta esplicitamente un payload utile. Inoltre il header Cache-Control: no-store e raccomandato perché le risposte 205 sono per definizione contestuali allo stato corrente dell'utente.
Implementazione lato server
Quasi tutti i framework moderni consentono di restituire il 205 con poche righe di codice. In Express.js: res.status(205).end(). In Laravel: return response('', 205). In Flask: return '', 205. In Spring: return ResponseEntity.status(205).build(). In ASP.NET Core: return StatusCode(205). L'importante e non includere alcun body, poiché i client conformi lo ignorerebbero comunque e alcuni potrebbero generare warning o errori di parsing.
Comportamento dei browser
I browser moderni (Chrome, Firefox, Safari, Edge) non gestiscono automaticamente il reset visivo del form quando ricevono un 205 via XHR o fetch: spetta al codice JavaScript leggere lo status e chiamare form.reset(). Il 205 viene quindi usato come segnale semantico verso applicazioni che lo interpretano, più che come comando attivo del browser. Esempio in fetch:
fetch('/api/submit', { method: 'POST', body: data })
.then(res => {
if (res.status === 205) {
document.getElementById('myForm').reset();
showToast('Salvato. Modulo pronto per nuovo inserimento.');
}
});
Quando NON usare il 205
Evita il 205 quando vuoi restituire dati al client (usa 200), quando non vuoi modificare la UI (usa 204) o quando la creazione di una risorsa e il risultato principale dell'operazione (usa 201 Created con Location header). Usarlo in contesti errati confonde sviluppatori e tool di monitoring. Inoltre, evita di usarlo in API public-facing senza documentarlo: client di terze parti potrebbero non interpretarlo correttamente.
Caching e proxy
Le risposte 205 non sono cacheable per default. Inoltre, alcuni proxy intermedi possono riscriverle come 204 se non comprendono la semantica: vale la pena verificarne il comportamento end-to-end con strumenti come curl -i o Postman. Cloudflare e altri CDN generalmente passano il 205 invariato, ma testa sempre il flusso completo prima di affidarti a questo codice in produzione.
205 in API REST moderne
Nel design di API REST, il 205 e una scelta consapevole per UI-driven endpoint. Per API "puramente dati" (microservizi backend-to-backend), un 200 OK con body informativo o un 204 No Content sono più appropriati. Documenta sempre nel tuo OpenAPI/Swagger quando un'endpoint puo restituire 205, così i client SDK generati gestiranno correttamente la semantica di reset.
Storia del codice 205
Il 205 e stato introdotto in HTTP/1.1 (RFC 2068, 1997) per coprire un caso ben preciso ma non comunissimo. Negli anni successivi e rimasto poco usato nel web pubblico, ma e diventato standard in contesti di data entry intensivo. Oggi le SPA moderne tendono a gestire il reset lato client senza affidarsi al server, ma il 205 resta un'opzione semanticamente pulita.
205 in applicazioni offline-first
Le applicazioni che lavorano offline e poi sincronizzano possono usare il 205 per segnalare "submission accettata, ora puoi pulire la coda locale". Combinato con queue management, riduce errori di duplicazione durante sync intermittenti.
Diagnostica
Per verificare che il tuo endpoint emetta correttamente 205, usa curl con flag verbose: curl -v -X POST -d "data=test" https://example.com/form. Ispeziona la risposta: status deve essere 205, Content-Length zero, nessun body. Se vedi 200 o 204 al posto di 205, il framework sta riscrivendo il codice (es. middleware di compression).
Hai bisogno di aiuto?
Se il tuo sito mostra errori HTTP, il team di G Tech Group puo aiutarti. Contattaci tramite il modulo di contatto.