The differences between the various HTTP 3XX redirect codes are not clear to me. Yes, I've read the spec, but there seems to be some discrepancy between the standard and actual practice here.
The 301
redirect code seems clear enough: This means the resource was permanently moved to another URI, and future requests should use that URI.
And the 307
redirect code also seems clear: it means the redirect is temporary, and future requests should still use the original URI.
But I can't tell what the difference is between 302
and 303
, or why either of them are really different from 301
. It seems that 302
was originally intended to be a temporary redirect, (like 307
), but in practice, most browsers treated it like a 303
. But what's the difference between a 303
and a 301
? Is 301
supposed to mean the redirect is more permanent?