HTTP状态码302、303、307都具有临时重定向的含义。告诉客户端,应该使用Location首部给出的URL来定位资源,将来仍使用老的URL。

  • HTTP/1.0中的302
    在HTTP/1.0协议中,如果客户端发出POST请求后,收到服务端的302状态码,用户代理(例如浏览器)不能直接重定向请求,而是需要用户进行确认,因为post请求不是冥等的可能改变了服务端的状态。但是有些用户代理错误地直接使用Location首部给出的URL发出GET请求。
  • HTTP/1.0中没有303和307
  • HTTP/1.1中的302
    在HTTP/1.0协议中,如果客户端发出POST请求后,收到服务端的302状态码,用户代理(例如浏览器)不能直接重定向请求,而是需要用户进行确认,因为post请求不是冥等的可能改变了服务端的状态。但是有些用户代理错误地直接使用Location首部给出的URL发出GET请求。
  • HTTP/1.1中的303
    在HTTP/1.0协议中,如果客户端发出POST请求后,收到服务端的303状态码,用户代理(例如浏览器)应该使用Location首部给出的URL发出GET请求。
  • HTTP/1.1中的307
    在HTTP/1.1协议中,如果客户端发出POST请求后,收到服务端的307状态码,用户代理(例如浏览器)不能直接重定向请求,而是需要用户进行确认,因为post请求不是冥等的可能改变了服务端的状态。

    参考文献

  • HTTP/1.0 RFC
  • HTTP/1.1 RFC