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 a
The difference between 303 and 307 is this:
303: See other. The request is received correctly, but the results should be retrieved using a GET on the redirect url.
307: Temporary redirect. The entire request should be redirected to the new url. Any post data should be re-posted.
Note that 302 was intended to have the behavior of 307, but most browsers implemented it as the behavior of 303 (both of which didn't exist back then). Therefore, those two new codes were introduced to replace 302.
The difference between 301 and 303:
301: The document is moved. Future requests should use the new url. This url is obsolete.
Note: Be careful with this code. Browsers and proxies tend to apply really agressive caching on it, so if you reply with a 301 it might take a long while for someone to revisit that url.
303: The request is received correctly. Any PUT requests are processed. The resulting document can be retrieved from the redirect url. Future request should still go to the original url.