在POST
请求之后,通常会有一个HTTP的标头Location
,它会告知客户端所创建资源的位置。
这是否意味着必须使用Location
请求请求GET
的网址?
或者,HTTP客户端应该先使用OPTIONS
方法才能最终使用GET
操作?
在我看来,第二种方式会更好,因为除非需要,否则它将允许服务器不必提供GET
操作。
答案 0 :(得分:0)
请求的类型取决于使用Location标头发送的HTTP状态代码。
301和302状态可能会触发GET请求(出于历史原因)。
303状态显式触发GET请求。
307和308状态会触发用于请求重定向资源的任何类型的请求。
答案 1 :(得分:0)
要求使用GET的唯一代码是303(参见其他)。由于历史原因,301和302允许客户端将响应类型从POST更改为GET,但一般来说,客户端不应该这样做。
这就是说,在响应GET请求时,服务器永远不会需要来提供资源。唯一的要求是GET请求必须不会造成伤害。 如果您需要重定向到某个资源但又不想为该重定向提供GET响应,只需让它返回代码405(Method Not Allowed)和相应的Allow标头。由于Allow标头包含资源的允许方法,因此无需在OPTIONS请求前面添加GET请求:客户端获取所需的内容以及错误消息。