Eccomi qua.
Innanzitutto i premi, che sono due:
Il primo premio va a
Emiliok, per l'esaustività della risposta. Purtroppo non è esatta per quanto riguarda l'utilizzo del codice 307, che non si applica necessariamente in risposta ad un metodo
POST.
Il secondo premio va a
Stefano, perché per primo ha risposto "302".
Adesso la spiegazione:
Secondo il protocollo HTTP 1.1, lo status corretto da erogare è il 307.
Tuttavia si pongono due problemi:
- Alcuni client non supportano il protocollo HTTP 1.1. A questi client non possiamo erogare il 307 ma dobbiamo usare il 302;
- Alcuni client che supportano il protocollo HTTP 1.1 (e ai quali sarebbe corretto erogare 307) dichiarano volutamente di supportare solo la versione 1.0. Uno di questi client è, ad esempio... lo spider di Yahoo!.
Soluzione finale:
A meno di non progettare la gestione delle redirezioni temporanee prendendo in considerazione tutti i fattori possibili (versione HTTP usata del client, eccezioni per i client che dichiarano falsamente un protocollo vecchio, ecc.), purtroppo l'unico modo
pratico per gestire le redirezioni temporanee è
continuare ad usare il 302, in barba ai protocolli.
Questo non significa che non si possa seguire scrupolosamente i protocolli e progettare una gestione delle redirezioni perfetta, tenendo conto di tutte le eccezioni. Solo che sarebbe piuttosto rompiballe, se si tiene conto del fatto che non sappiamo quanti e quali client dichiarano falsamente un HTTP 1.0 invece che 1.1.
Questo è quanto.
Per le birre, farsi avanti in privato.
