HTTPServletResponse - 如何在重定向前设置标头?

HTTPServletResponse - How to Set Header before redirect?

提问人:Tanuj Kathuria 提问时间:11/17/2023 更新时间:11/17/2023 访问量:25

问:

我有一个基于 java 的 struts 应用程序,需要从 java 类重定向到外部域。因此,我按如下方式重定向,效果很好。

httpServletResponse.sendRedirect(EXTERNAL_URL);

问题在于外部域是通过负载均衡器连接的,并且它EXTERNAL_URL将协议读取为 null。因此,它期望 Request Header 显式包含以下标头。

"X-Forwarded-Proto": "https"

因此,在重定向之前,我设置了响应标头,如下所示:

response.setHeader("X-Forwarded-Proto", "https");
response.sendRedirect(EXTERNAL_URL);

但是,即使在 httpServletResponse 中设置了标头后,负载平衡器也不会收到此标头。

有没有其他方法可以setHeader然后重定向?

java servlet httpresponse 请求标头 response.redirect

评论

0赞 Sudhir Ojha 11/17/2023
请尝试response.setHeader("X-Forwarded-Proto", "https"); request.getRequestDispatcher(EXTERNAL_URL).forward(request, response);
0赞 Rob Spoor 11/17/2023
@SudhirOjha这不起作用,因为重定向需要指向外部域。
0赞 Rob Spoor 11/17/2023
我认为这是不可能的。带有标头的重定向将发送到浏览器。然后,浏览器执行重定向,但不会将标头作为重定向的一部分发送。你对此无能为力。

答: 暂无答案