我需要强制客户端重试其请求(意味着再次发送相同的请求)。我正在考虑的是状态代码 307
的响应和标题Location: <original-url>
(目前这已经足够了,除非有更好的方法)。
我的问题是,从 HTTP 规范的角度来看,Location
的正确值是多少?在这个特定的背景下。或者更具体地说,在 Java 中具有 request
类型 HttpServletRequest
,我应该使用哪一个:getRequestURI
(返回此请求的 URL 部分,从协议(protocol)名称到 HTTP 请求第一行中的查询字符串)或 getRequestURL
(重建客户端用于发出请求的 URL,其中包含协议(protocol)、服务器名称、端口号和服务器路径,但不包含查询字符串参数)。
如有任何其他建议/评论,我们将不胜感激。
最佳答案
getRequestURL() 返回客户端使用的完整 URL,而 getRequestURI() 仅返回服务器中的基本路径。 我正在使用这种技术来重定向响应状态,这是我的代码,这很有用:-
httpServletResponse.reset();
httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
httpServletResponse.setHeader("SERVER-RESPONSE", "bad request");
return;
您还可以在响应中设置 header 。
关于java - HTTP:发送 "retry/redirect"响应的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44110573/