【问题标题】:Pass header parameters with sendRedirect URL [closed]使用 sendRedirect URL 传递标头参数 [关闭]
【发布时间】:2013-06-21 04:03:35
【问题描述】:

如何通过sendRedirect URL 传递头部参数?

我正在尝试对不同的应用程序执行sendRedirect。但我想将标头参数与请求一起传递。如何做到这一点?

【问题讨论】:

  • 你在努力什么?

标签: java url http-headers


【解决方案1】:

HttpServletResponse.sendRedirect() 向客户端发送重定向响应(302)。然后,客户端向Location 标头中指定的资源发起新请求。 HTTP 没有定义服务器要求客户端将任何请求标头设置为重定向资源的方法。

要将数据传递给新资源,您可以在查询字符串中设置它:

具体化

response.sendRedirect("NewResource?param1=value1");

新资源

request.getParameter("param1");

【讨论】:

  • 但是客户端呢?他会得到响应头吗?
【解决方案2】:

如果我的理解正确,那是不可能的。听起来你想要这样的东西:

Client -> ServerA: 
GET /foo

ServerA -> Client: 
301 Moved Permanently
<Something magic to force the client to send header "Header1: xxx" to ServerB>

Client -> ServerB:
GET /bar
Header1: xxx

那种“神奇的东西”并不存在。客户端将始终发送它想要发送的任何标头值。甚至没有一个标准的方式来重定向到建议客户端做这样的事情。

【讨论】:

    【解决方案3】:

    以下几行将http headers 设置为response

        response.setHeader(header1, value1);
        response.setHeader(header2, value2);
         -----
         -----
         response.sendredirect("someJsp.jsp") 
    

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2019-09-05
      相关资源
      最近更新 更多