【问题标题】:Does a server have to carry out an operation before redirection?服务器是否必须在重定向之前执行操作?
【发布时间】:2012-11-25 00:41:21
【问题描述】:

Is HTTP 303 acceptable for other HTTP methods? 中,我们确定HTTP 303 可用于其他HTTP 方法。

Post/Redirect/Get 模式要求服务器在返回HTTP 303 之前执行操作。对于这种重定向和其他类型的重定向,HTTP PUTDELETE 是否也是如此? 是否需要服务器在重定向之前执行该操作?或者是否可以假设客户端会根据需要在规范 URL 上重复请求?

当您考虑到重定向经常用于负载平衡这一事实时,这变得更加有趣。

【问题讨论】:

    标签: 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 是药剂师说“我们不能开那个处方。走 去隔壁的药房。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 2018-01-04
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多