http - 我应该在成功的 POST 或 PUT 请求后停止重定向吗?

标签 http

至少在 Rails 社区中,通过重定向而不是返回来响应成功的 POSTPUTDELETE 请求似乎很常见成功。例如,如果我 PUT 对我的用户个人资料进行合法更改,惯用的响应将是对个人资料页面的 302 重定向

这不是错了吗?我们不应该从请求中返回 200 OK 吗?还是 201 Created,如果是 POST 请求?在 HTTP/1.1 Status Definitions 中的任何一个无论如何,都允许(或要求)包含回复。

我想我想知道,在我去“修复”我的应用程序之前,是否有一个很好的理由该死的为什么社区已经采用了重定向而不是成功响应的方式。

最佳答案

尽管您使用了 PUT 动词,但我假设您正在谈论一个主要通过浏览器访问的网络应用程序。在这种情况下,使用重定向跟进 POST 的通常原因是 post-redirect-get pattern ,这避免了用户刷新或使用浏览器的后退和前进控件引起的重复请求。似乎在许多情况下,这种模式通过重定向到用户最有可能访问的下一个页面而不是成功页面而过载。我认为您提到的任何一种方式都不一定是错误的,但是以不严格遵守 HTTP 语义为代价进行重定向可能会更加用户友好。

关于http - 我应该在成功的 POST 或 PUT 请求后停止重定向吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029525/

相关文章:

http - 更具体的 HTTP 代码是 "Semver breaking change"吗?

c# - 使用 C# 的跨平台开源异步 HTTP 和 DB

http - 如何将文件提供给telnet

http - WSDL 中 SOAP 绑定(bind)和 HTTP 绑定(bind)的区别

java - 我如何在js中使用websocket协议(protocol)?

rest - 使用 JAX-RS 转发来自另一台服务器的响应

javascript - Promise.all 的异步图像预加载不适用于非 Chrome 浏览器

java - 将元数据添加到 RESTful JSON 响应的最佳实践是什么?

java - 用于 json 的日期格式

java - 确保收到 `response.getOutputStream().write()`