As diferenças entre os vários códigos de redirecionamento HTTP 3XX não são claras para mim. Sim, eu li as especificações, mas parece haver alguma discrepância entre a prática padrão e a real aqui.
O 301
código de redirecionamento parece claro o suficiente: isso significa que o recurso foi movido permanentemente para outro URI e solicitações futuras devem usar esse URI.
E o 307
código de redirecionamento também parece claro: significa que o redirecionamento é temporário, e solicitações futuras ainda devem usar o URI original.
Mas não sei dizer qual é a diferença entre 302
e 303
, ou por que ambos são realmente diferentes 301
. Parece que 302
originalmente se destinava a ser um redirecionamento temporário , (como 307
), mas, na prática, a maioria dos navegadores o tratou como a 303
. Mas qual é a diferença entre a 303
e a 301
? É 301
suposto significar que o redirecionamento é mais permanente?
fonte
A diferença entre 303 e 307 é esta:
303 : Veja outro. A solicitação é recebida corretamente, mas os resultados devem ser recuperados usando um GET no URL de redirecionamento.
307 : Redirecionamento temporário. A solicitação inteira deve ser redirecionada para o novo URL. Quaisquer dados de postagem devem ser postados novamente.
Observe que o 302 foi projetado para ter o comportamento 307, mas a maioria dos navegadores o implementou como o comportamento do 303 (os dois não existiam na época). Portanto, esses dois novos códigos foram introduzidos para substituir o 302.
A diferença entre 301 e 303:
301 : O documento é movido. Solicitações futuras devem usar o novo URL. Este URL está obsoleto.
Nota: Tenha cuidado com este código. Navegadores e proxies tendem a aplicar um cache realmente agressivo, portanto, se você responder com um 301, pode levar um longo tempo para alguém revisar esse URL.
303 : A solicitação foi recebida corretamente. Quaisquer solicitações PUT são processadas. O documento resultante pode ser recuperado a partir do URL de redirecionamento. Solicitações futuras ainda devem ir para o URL original.
fonte