gpt4 book ai didi

java - 如何覆盖 Http 中的 302 状态?

转载 作者:行者123 更新时间:2023-12-02 06:29:34 25 4
gpt4 key购买 nike

客户端调用一个休息服务并将其响应重定向到另一个休息服务 sendRedirect()方法

response.sendRedirect("http://localhost:8080/com.youtube.rest/api/v1/status/toreply"); .

从第二个服务结果返回到客户端。但是当将响应从服务 1 重定向到服务 2 时,服务 1 向客户端确认其状态 302。我不想从服务 1 返回任何确认给客户端。我怎样才能避免这种承认呢?或者我想返回状态 200 确认。请建议一些方法来解决此问题。

最佳答案

发回状态代码 302 正是您告诉服务器要做的事情!这就是重定向的作用:它告诉客户端应该在不同的 URL 下查找资源!

重定向的状态代码为302(已找到)。由于 HTTP 1.1 也可以使用 303 (参见其他)或 307 (暂时移动),但 servlet 规范明确指出 302 必须是用过的。另请参阅JavaDoc of HttpServletResponse#sendRedirect :

(...) Calling this method sets the status code to SC_FOUND 302 (Found). (...)

转发到同一网络应用程序中的资源

如果您想将请求转发到同一 Web 应用程序中的另一个资源/servlet,请使用 RequestDispatcher:

RequestDispatcher dispatcher =
request.getRequestDispatcher("path-to-local-content");
dispatcher.forward(request, response);

转发到同一服务器上另一个 Web 应用程序中的资源

如果内容位于同一服务器上但在另一个 Web 应用程序中,则必须通过 ServletContext 创建 RequestDispatcher:

ServletContext context = request.getServletContext();
RequestDispatcher dispatcher =
context.getRequestDispatcher("/<other-webapp>/<path-to-content>");
dispatcher.forward(request, response);

请注意,某些服务器不允许跨上下文调度并返回 null 调度程序。在 Tomcat 上,跨上下文调度默认处于禁用状态,但可以在 Context configuration 中启用。 .

包含来自“外国”网络服务器的内容

如果内容不是本地托管在同一台服务器上(更准确地说:由同一 servlet 引擎托管),您必须打开一个到外部 Web 服务器的 HttpURLConnection 并自行检索数据。

另请参阅:

关于java - 如何覆盖 Http 中的 302 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com