【问题标题】:Does a server have to carry out an operation before redirection?服务器是否必须在重定向之前执行操作?
【发布时间】:2012-11-25 00:41:21
【问题描述】:
【问题讨论】:
标签:
http-status-codes
http-redirect
http-status-code-307
http-status-code-303
【解决方案1】:
引用RESTful Web Services第378页:
303(“查看其他”)
请求已处理,但不是服务器发送响应文档,
它向客户端发送响应文档的 URI。这可能是静态的 URI
状态消息,或者一些更有趣的资源的 URI。
几页后...
307(“临时重定向”)
请求没有被处理,因为请求的资源不在家里:它是
位于某个其他 URI。客户端应将请求重新提交到另一个 URI。
对于GET 请求,唯一被请求的是服务器发送一个表示,这个状态码是相同的to 303 (“See Other”)。 307 是对 GET 的良好响应的典型情况是服务器想要将客户端发送到镜像站点。 但是对于 POST, PUT, and DELETE 请求,服务器应该拿一些
响应请求的操作,此状态码与303 明显不同。
303 响应 POST, PUT, or DELETE 表示操作成功
但是响应实体主体没有与此请求一起发送。如果客户端
想要响应实体主体,它需要向另一个 URI 发出 GET 请求。
307 响应 POST, PUT, or DELETE 意味着服务器甚至没有尝试过
执行操作。客户端需要重新提交整个请求到 URI 中
Location 标头。
类比可能会有所帮助。您带着要开的处方去药房。 303 是
药剂师说:“我们已经给你开了处方。转到下一个窗口进行选择
把你的药上来。” 307 是药剂师说“我们不能开那个处方。走
去隔壁的药房。”