1. RFC协议规范
- 301 Moved Permanently,永久重定向
- 302 Found
- 303 See Other
- 307 Temporary Redirect
- 308 Permanent Redirect 永久重定向
2. 基本结论
- 3XX开头的HTTP状态码都表示重定向的响应。
- 301、308是永久重定向;302、303、307是临时重定向。
- 301、302是http 1.0的内容,303、307、308是http1.1的内容。
- 301和302本来在http/1.0规范中是不允许重定向时改变请求method的(将POST改为GET),实际许多浏览器实现的时候允许重定向时改变请求method。这就出现了规范和实现不一致的问题
- 302,303,307的出现,都是基于HTTP/1.1兼容HTTP/1.0规范和实现的差异性;
- 303的出现是允许重定向时改变请求method
- 307、308则不允许重定向时改变请求method
- 此外303响应禁止被缓存。
3. HTTP/1.0
301
301状态码在HTTP 1.0和HTTP 1.1规范中均代表永久重定向,对于资源请求,原来的url和响应头中location的url而言,资源应该对应location中的url。对于post请求的重定向,还是需要用户确认之后才能重定向&