我需要强制客户端重试其请求(意味着再次发送相同的请求)。我正在考虑的是状态代码307
和标头Location: <original-url>
的响应(现在已经足够好了,除非有更好的方法)。
我的问题是,从HTTP规范的角度来看,在这个特定的上下文中Location
的正确值是什么。或者更具体地说,在request
类型HttpServletRequest
的Java中,我应该使用哪一个:getRequestURI
(从协议名称返回此请求的URL部分到第一个中的查询字符串HTTP请求的行)或getRequestURL
(重构客户端用于发出包含协议,服务器名称,端口号和服务器路径的请求的URL,但不包括查询字符串参数)。
感谢任何其他建议/评论。
答案 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)