HTTP:发送“重试/重定向”响应的正确方法是什么

时间:2017-05-22 10:27:49

标签: java http web http-headers

我需要强制客户端重试其请求(意味着再次发送相同的请求)。我正在考虑的是状态代码307和标头Location: <original-url>的响应(现在已经足够好了,除非有更好的方法)。

我的问题是,从HTTP规范的角度来看,在这个特定的上下文中Location的正确值是什么。或者更具体地说,在request类型HttpServletRequest的Java中,我应该使用哪一个:getRequestURI(从协议名称返回此请求的URL部分到第一个中的查询字符串HTTP请求的行)或getRequestURL(重构客户端用于发出包含协议,服务器名称,端口号和服务器路径的请求的URL,但不包括查询字符串参数)。

感谢任何其他建议/评论。

2 个答案:

答案 0 :(得分:1)

getRequestURL()返回客户端使用的完整URL,其中getRequestURI()仅返回驻留在服务器中的基本路径。 我正在使用这种技术重定向响应状态这是我的代码,这很有用: -

httpServletResponse.reset();
httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
httpServletResponse.setHeader("SERVER-RESPONSE", "bad request");
return;

您也可以设置标题作为回应。

答案 1 :(得分:0)

我认为重定向首先是错误的状态代码。

这不是503的用途吗? (https://www.greenbytes.de/tech/webdav/rfc7231.html#status.503