GET 方法对 HTTP 位置资源的可用性
Availability of the GET method to a HTTP Location resource
在 POST
请求之后,通常会有一个 HTTP 的 header Location
通知客户端创建资源的位置。
这是否意味着 Location
的 URL 必须与 GET
请求一起请求?
或者 HTTP 客户端在最终使用 GET
操作之前应该先使用 OPTIONS
方法吗?
在我看来,第二种方式会更好,因为它允许服务器不必提供 GET
操作,除非需要。
请求类型取决于随位置 header 发送的 HTTP 状态代码。
301 和 302 状态可能会触发 GET 请求(由于历史原因)。
303 个状态显式触发 GET 请求。
307 和 308 状态会触发用于请求重定向资源的任何类型的请求。
要求您使用 GET 的唯一代码是 303(参见其他)。由于历史原因,301 和 302 允许客户端将响应类型从 POST 更改为 GET,但一般来说,客户端不应该这样做。
也就是说,在响应 GET 请求时,服务器永远[=14=]不需要提供资源。唯一的要求是 GET 请求不能造成伤害。 如果您需要重定向到资源但不想为该重定向提供 GET 响应,只需使用 return 代码 405(不允许的方法)和适当的 Allow header。因为 Allow header 包含资源允许的方法,所以不需要在 GET 请求前加上 OPTIONS 请求:客户端在错误消息旁边得到它需要的东西。
在 POST
请求之后,通常会有一个 HTTP 的 header Location
通知客户端创建资源的位置。
这是否意味着 Location
的 URL 必须与 GET
请求一起请求?
或者 HTTP 客户端在最终使用 GET
操作之前应该先使用 OPTIONS
方法吗?
在我看来,第二种方式会更好,因为它允许服务器不必提供 GET
操作,除非需要。
请求类型取决于随位置 header 发送的 HTTP 状态代码。
301 和 302 状态可能会触发 GET 请求(由于历史原因)。
303 个状态显式触发 GET 请求。
307 和 308 状态会触发用于请求重定向资源的任何类型的请求。
要求您使用 GET 的唯一代码是 303(参见其他)。由于历史原因,301 和 302 允许客户端将响应类型从 POST 更改为 GET,但一般来说,客户端不应该这样做。
也就是说,在响应 GET 请求时,服务器永远[=14=]不需要提供资源。唯一的要求是 GET 请求不能造成伤害。 如果您需要重定向到资源但不想为该重定向提供 GET 响应,只需使用 return 代码 405(不允许的方法)和适当的 Allow header。因为 Allow header 包含资源允许的方法,所以不需要在 GET 请求前加上 OPTIONS 请求:客户端在错误消息旁边得到它需要的东西。