gpt4 book ai didi

java - 如何在 HTTP 响应中设置 header ?

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:38 25 4
gpt4 key购买 nike

我有一个 servlet A,我在其中设置 HTTP 响应中的 header :

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String userName=request.getParameter("userName");
String newUrl = "http://somehost:port/ServletB";

response.addHeader("REMOTE_USER", userName);

response.sendRedirect(newUrl);
}

现在在 servlet B 中,我试图获取在 servlet A 中设置的 header 值:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String userid = request.getHeader("REMOTE_USER");
}


但是这里 userid 的值是 null。请让我知道我在这里缺少什么。

最佳答案

首先你要了解的本质

response.sendRedirect(newUrl);

它向客户端(浏览器)提供带有 URL 的 302 http 代码响应。然后浏览器对该 URL 发出单独的 GET 请求。并且该请求不知道第一个请求中的 header 。

因此,如果您需要将 header 从 Servlet A 传递到 Servlet B,sendRedirect 将不起作用。

如果你想让这段代码工作——在 Servlet A 中使用 RequestDispatcher(而不是 sendRedirect)。此外,最好使用相对路径。

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String userName=request.getParameter("userName");
String newUrl = "ServletB";
response.addHeader("REMOTE_USER", userName);
RequestDispatcher view = request.getRequestDispatcher(newUrl);
view.forward(request, response);
}

========================

public void doPost(HttpServletRequest request, HttpServletResponse response)
{
String sss = response.getHeader("REMOTE_USER");
}

关于java - 如何在 HTTP 响应中设置 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552543/

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