GET方法对HTTP位置资源的可用性

时间:2015-03-23 08:40:55

标签: rest http

POST请求之后,通常会有一个HTTP的标头Location,它会告知客户端所创建资源的位置。

这是否意味着必须使用Location请求请求GET的网址?

或者,HTTP客户端应该先使用OPTIONS方法才能最终使用GET操作?

在我看来,第二种方式会更好,因为除非需要,否则它将允许服务器不必提供GET操作。

2 个答案:

答案 0 :(得分:0)

请求的类型取决于使用Location标头发送的HTTP状态代码。

301和302状态可能会触发GET请求(出于历史原因)。

303状态显式触发GET请求。

307和308状态会触发用于请求重定向资源的任何类型的请求。

进一步阅读:https://tools.ietf.org/html/rfc7231#section-6.4

答案 1 :(得分:0)

要求使用GET的唯一代码是303(参见其他)。由于历史原因,301和302允许客户端将响应类型从POST更改为GET,但一般来说,客户端不应该这样做。

这就是说,在响应GET请求时,服务器永远不会需要来提供资源。唯一的要求是GET请求必须不会造成伤害。 如果您需要重定向到某个资源但又不想为该重定向提供GET响应,只需让它返回代码405(Method Not Allowed)和相应的Allow标头。由于Allow标头包含资源的允许方法,因此无需在OPTIONS请求前面添加GET请求:客户端获取所需的内容以及错误消息。