Perché il modulo del tuo sito arriva vuoto dopo il reindirizzamento
In Chrome 157 un POST da 8 byte, dopo il 302 o il 303, prosegue con una GET vuota. Dopo il 307 i campi tornano: nome=Ada.
In questa guida (3)
Il modulo può arrivare vuoto perché la seconda richiesta, quella dopo il reindirizzamento, non riporta i campi. Il 13 novembre 2026, in Chrome 157.0.8103.52, un POST con nome=Ada (8 byte) seguito da 302 o da 303 produceva una GET senza corpo. Lo stesso POST seguito da 307 arrivava di nuovo, ancora nome=Ada, ancora 8 byte.
Che cosa ho messo in ascolto
Un server locale riceveva il POST su /invio e rispondeva con Location: /arrivo. Il codice di stato cambiava tra 302, 303 e 307. La pagina aveva un solo campo, nome, valore Ada. Niente file, niente altro dominio, niente service worker. Ho ripetuto la prova con curl 8.7.1, comando con --data e -L, senza forzare il metodo con -X.
Che cosa è arrivato
In Chrome la prima richiesta era sempre POST /invio, 8 byte, nome=Ada. Dopo il 302 la successiva era GET /arrivo, lunghezza 0. Dopo il 303, di nuovo GET /arrivo, lunghezza 0. Dopo il 307 era POST /arrivo, 8 byte, nome=Ada.
Curl 8.7.1, con --data e -L, ha fatto la stessa cosa: GET vuota dopo 302 e dopo 303, POST con nome=Ada dopo 307. Con -X POST, invece, il metodo della seconda richiesta restava POST anche dopo 302 e 303, ma la lunghezza era 0. Il corpo non c'era lo stesso. Chi controlla solo il metodo, e usa -X, può credere che i campi siano stati rinviati.
La sezione 15.4.3 di RFC 9110, letta il 13 novembre 2026, dice che per il 302 il client può cambiare il metodo da POST a GET. Se questo esito non serve, la stessa nota indica il 307. La sezione 15.4.4 descrive il 303 come un reindirizzamento verso una richiesta di lettura, GET o HEAD. La sezione 15.4.8 dice che, con il 307, il client non deve cambiare il metodo.
Dove guardare nel registro
Nel registro degli accessi la coppia è il POST all'indirizzo del modulo e la richiesta successiva, quella verso Location. Se il programma legge i campi solo sulla seconda URL, un 302 gli consegna una richiesta vuota anche quando il browser li aveva inviati la prima volta. Il 303 serve quando, dopo aver salvato, si vuole aprire una pagina di esito con una GET. Il 307 serve quando il nuovo indirizzo deve ricevere lo stesso POST.
Non ho provato Firefox, Safari, un invio con fetch, un modulo con file, né un reindirizzamento verso un altro dominio. Gli 8 byte sono la lunghezza di nome=Ada, non una soglia del browser.
L'immagine di copertina, sulla scheda Wikimedia, è il retro di un modulo vuoto per il certificato di cittadinanza portoricana, estate 2007, dominio pubblico. È un altro modulo, diverso dal campo nome=Ada della prova.


