在HTTP 303 是否可用于其他 HTTP 方法?我们确定HTTP 303可用于其他 HTTP 方法。
Post/Redirect/Get模式要求服务器在返回之前执行操作HTTP 303
。HTTP PUT
对于这种和DELETE
其他类型的重定向是否也是如此?重定向前是否需要服务器执行操作?或者它是否可以假设客户端会根据需要在规范 URL 上重复请求?
当您考虑到重定向通常用于负载平衡这一事实时,这变得更加有趣。
在HTTP 303 是否可用于其他 HTTP 方法?我们确定HTTP 303可用于其他 HTTP 方法。
Post/Redirect/Get模式要求服务器在返回之前执行操作HTTP 303
。HTTP PUT
对于这种和DELETE
其他类型的重定向是否也是如此?重定向前是否需要服务器执行操作?或者它是否可以假设客户端会根据需要在规范 URL 上重复请求?
当您考虑到重定向通常用于负载平衡这一事实时,这变得更加有趣。
引用RESTful Web 服务第 378 页:
303(“见其他”)
请求已被处理,但不是服务器发送响应文档,而是向客户端发送响应文档的 URI。这可能是静态状态消息的 URI,或者是一些更有趣的资源的 URI。
几页后...
307(“临时重定向”)
请求尚未处理,因为请求的资源不在本地:它位于某个其他 URI。客户端应将请求重新提交到另一个 URI。对于
GET
请求,唯一被请求的是服务器发送一个表示,这个状态码是相同的to 303 (“See Other”)
。对 a 做出良好响应的典型情况是服务器想要将客户端发送到镜像站点。307
GET
但是对于POST, PUT, and DELETE
请求,服务器应该采取一些行动来响应请求,这个状态码与303
. A303
回应POST, PUT, or DELETE
表示操作已成功,但响应实体主体未与此请求一起发送。如果客户端想要响应实体主体,它需要GET
向另一个 URI 发出请求。A307
响应 aPOST, PUT, or DELETE
意味着服务器甚至还没有尝试执行该操作。客户端需要将整个请求重新提交到Location
标头中的 URI。一个类比可能会有所帮助。您带着要开的处方去药房。A
303
是药剂师说“我们已经为您开药了。去下一个窗口取药。” A307
是药剂师说“我们不能开那个处方。去隔壁的药店。”</p>