我们的移动应用程序使用POST请求来检查其状态。我们需要将此服务迁移到新位置。我们使用新端点发布了新版本的移动应用程序。我计划发布将客户端重定向到新位置的服务更新。
@RequestMapping(value = "/url", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public void performHandShake(HttpServletResponse response) throws IOException {
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", service.getNewUrl());
}
我正在使用Postman和当前的Android实现测试此服务,并且它们都在HTTP错误405上失败 - 不允许使用方法。它们似乎都重定向到GET而不是请求POST。有没有正确的方法来重定向POST请求?我不想为新端点实现代理。
答案 0 :(得分:2)
如果您不希望请求方法从POST
更改为GET
,请使用308
代替301
:
301
(永久移动)状态代码表示目标 资源已被分配一个新的永久URI和任何未来 对此资源的引用应该使用其中一个附带的URI。 [...]注意:由于历史原因,用户代理可以更改请求 从
POST
到GET
的方法,用于后续请求。如果这 行为是不受欢迎的,307
(临时重定向)状态代码 可以改为使用。
308
(永久重定向)状态代码表示目标 资源已被分配一个新的永久URI和任何未来 对此资源的引用应该使用其中一个附带的URI。 具有链接编辑功能的客户端应该自动重新链接 对有效请求URI的引用 服务器发送的一个或多个新引用,如果可能的话。 [...]注意:此状态代码类似于
301
(永久移动), 除了它不允许更改请求方法POST
至GET
。
有关详细信息,请参阅此answer。