使用201创建重定向

Tho*_*ini 30 http http-status-codes

有没有办法重定向201答案?

RFC指定必须在Location标头中指定新创建的资源,并且我指定它.我假设浏览器会重定向,但它不会,即使页面没有内容.

我希望用户在POST操作后重定向到新资源.因此我很想使用,303 See Other但201似乎更合适.

那么,有没有办法在没有用户干预的情况下自动重定向流行的浏览器而不依赖于Javascript?

Kyl*_*lar 21

我认为你混淆了两种不同的语义响应 - 一种是告诉客户你成功创建了一个资源,以及它在哪里.客户端是否去获取它是一个不同的故事.

第二个是告诉客户端它已经为它请求的资源发送了错误的位置URI - 它应该再次尝试,但是使用不同的URI.

在这种情况下,303是合适的 - 事实上,明确建议这样做:

(来自rfc)

它主要用于允许输出POST操作以将用户代理重定向到选定的资源,因为这样做可以单独识别,添加书签和缓存的形式提供与POST响应相对应的信息,而与原始要求.

  • "第二个是告诉客户端它已经为它正在请求的资源发送了错误的位置URI",只有当请求方法是GET时.有时,对资源进行POST并使其创建具有不同URI的新子资源是合法的. (6认同)