重新导向201创建
有没有办法通过201回答重定向?
RFC指定必须在Location
标题中指定新创建的资源,并且指定它。 我认为浏览器会重定向,但它不会,即使页面没有内容。
我希望用户在POST操作后重定向到新资源。 因此,我很想使用303 See Other
但201似乎更合适。
那么,有没有什么办法可以在没有用户干预的情况下自动重定向流行的浏览器,而不依赖于Javascript?
我认为你混淆了两种不同的语义反应 - 一种是告诉客户你已经成功创建了一个资源,并且它在哪里。 客户是否去取它是一个不同的故事。
第二个是告诉客户它已经为它请求的资源发送了错误的位置URI - 并且它应该再试一次,但是使用不同的URI。
在这种情况下,303是合适的 - 事实上,这是明确推荐的:
(来自rfc)
它主要用于允许POST操作的输出将用户代理重定向到选定的资源,因为这样做可以提供与POST响应相对应的信息,其形式可以单独标识,书签和缓存,与原始请求。
浏览器将通过其中一个3xx状态码执行重定向操作,该规范没有定义用户代理必须重定向到201.您可以尝试发送刷新标题以查看它是否强制重定向到Location
标题,但我不会指望它。 为什么不坚持3xx响应?
您可以发送一个Refresh
标题。