We're implementing a short url service where the redirection target will be changing daily. The urls will be accessed by mobile devices and will always be GET requests. I'm trying to understand which is the best 300-type redirect for the job.
AFAIK most url shortening services use 301 redirects (Moved permanently). However, according to the specs, the 303 (See other) and 307 (Moved temporarily) redirects seems like they were designed for our case...
- Are 303/307 as well supported as 301? The specs say they were only implemented in HTTP 1.1- what limitations does that spell?
- Are there any actual caching or performance implications of choosing 301 vs 303/307.
- For GET requests, is there any reason to pick 303 vs 307?
- Is there any reason to use 302 redirects?
- Any other things to consider?
Yes/None.
I don't think so.
303 has semantics different than 307. If the requested resource is "somewhere else", 303 is not the right answer.
Not really, as far as I can tell. It has the same semantics as 307, but the UA might rewrite a POST request to GET.
See http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-18.html#status.3xx
The reason that url shortening service use 301 (permanent) is:
All 302, 303 and 307 are temporary redirects and simply do not do the job. Except that if you want to change the destination url, you could use 302. E.g. example.com/contact redirects to example.com/temp/contact but you intend to replace the latter by example.com/v2/contact later.