java - HTTP:发送 "retry/redirect"响应的正确方法是什么

标签 java http web http-headers

我需要强制客户端重试其请求(意味着再次发送相同的请求)。我正在考虑的是状态代码 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/

相关文章:

Javascript 字符串操作获取字符串的一部分

web - 我应该为 VPS 购买多少内存?

javascript - 我应该在哪里实现网站的 js

java - build.xml 在 NetBeans 中如何工作?

java - Swing 组件中隐藏的快捷方式是什么?

c# - 如何获取 HttpContext 调用的 Web 服务方法?

html - 请求错误 (invalid_request) - Android 浏览器

java - node.js 和本地主机上的 java 服务器之间的通信

java - 其余错误代码/成功代码

api - 在 Flutter 中发送 API 请求。图片上传