如何在HTTP响应中设置标头?

帕基拉:

我有一个Servlet A,在其中设置HTTP响应中的标头:

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中设置的标头值

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

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


但是这里的userid的值null请让我知道我在这里想念的东西。

阴毛:

首先,您必须了解

response.sendRedirect(newUrl);

它为客户端(浏览器)302 HTTP代码响应提供了URL。然后,浏览器在该URL上发出单独的GET请求。而且该请求在第一个请求中没有标题。

因此,如果您需要将标头从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");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在RESTEasy客户端框架中设置HTTP标头?

在Java中,如何设置Restlet响应的标头?

如何在Angular 2中正确设置Http请求标头

如何在所有Django响应中添加HTTP标头

从AWS Lambda设置HTTP响应标头

AngularJS $ http模拟响应(...):如何在响应中模拟`location`标头?

服务器如何设置HTTP响应标头?

如何在Koa.js中为所有响应设置标头?

如何在.NET Core 2.0服务中设置响应标头

如何在AWS Load Balancer响应中禁用Apache HTTP标头信息?

如何在Angular 8中获取http POST的响应标头

如何在vue-cli中设置HTTP标头?

如何从Azure Functions的HTTP响应中删除标准标头?

如何在NestJS响应中设置标头字段?

如何在不使用自定义服务器的情况下在Next.js中设置自定义HTTP响应标头?

如何在boost-beast http请求中设置http标头?

如何在node-http-proxy中设置Access-Control-Allow-Headers标头

如何在每个HTTP api调用中设置不同类型的标头?

如何使用Apache从HTTP响应中删除Server:标头?

如何在Rebol3中获取HTTP响应标头?

如何在Apache JClouds中设置HTTP标头?

使用BridgeTalk HttpConnection对象时,如何在Adobe Illustrator ExtendScript中设置HTTP标头?

HTTP响应标头被覆盖。哪里可以在apache中设置所有HTTP响应标头?

如何在VBScript中获取http响应标头

如何在azure逻辑应用程序http操作中设置标头或身份验证

如何在magento中设置http标头

如何在Struts2拦截器中配置HTTP响应标头?

在 ASP.NET HTTP 响应中设置 CORS 标头

如何在 Guzzle 中设置 Authorization HTTP 标头?