302重定向是否需要GET请求?

时间:2012-04-11 10:20:03

标签: http

我正在构建一个Web服务的API,我一直在问自己。想象一下,有一个API调用来创建一个新项目,比如/api/project/create.json,它会将(302 Redirect)重定向到新创建的项目,比如说/api/project/123.json。如果第一个请求是通过POST发送的,那么在哪里指定,必须用GET重新获得第二个URI?

是否有任何RFC声明,重定向始终必须遵循GET?或者仅更改URL并将相同的POST请求再次发送到新URL是有效的客户端行为吗?

想象一下,我有旧的API服务器和新的API服务器,我想将客户端POST-Request重定向到新的API-URL。我该怎么办?

1 个答案:

答案 0 :(得分:1)

  

如果第一个请求是通过POST发送的,那么在哪里指定,必须使用GET重新获得第二个URI?

无处。

  

是否有任何RFC声明,重定向始终必须遵循GET?或者仅更改URL并将相同的POST请求再次发送到新URL是有效的客户端行为吗?

不,实际上RFC(RFC 2616)规定更改301和302上的方法名称是不正确的。

有关详细信息,另请参阅http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-19.html#status.3xx

  

想象一下,我有旧的API服务器和新的API服务器,我想将客户端POST-Request重定向到新的API-URL。我该怎么办?

我建议使用状态码307(因为那个浏览器错误较少)。