gpt4 book ai didi

java - 更改 servlet header 并重定向到过滤器中的其他 url

转载 作者:可可西里 更新时间:2023-11-01 16:38:35 27 4
gpt4 key购买 nike

我是 servlet 的新手,我希望执行以下操作。

我在我的地方设置了一个过滤器:

void doFilter( ServletRequest request, 
ServletResponse response,
FilterChain chain ) throws IOException, ServletException
{
}

当某些 url 与模式匹配时,将调用这些过滤器。

在这个方法中,我希望这样做:

  1. 通过输入我知道的身份验证 key 来更改传入的请求 header

  2. 并在适当的地方使用该身份验证 header 将 request 重定向到其他 url,例如 www.test.com,以便该特定请求的响应将是www.test.com

  3. 的结果

有可能吗?

我试过这些:

response.setHeader("WWW-Authenticate","Basic MyKey")
response.setHeader("Location","www.google.com")

但是这之后我该怎么办呢?如何将页面重定向到 google.com?

提前致谢。

最佳答案

(幸运的是)这是不可能的。如果您可以作为 Web 服务器控制 Web 客户端向任意域发出的 HTTP 请求的 header ,那将是一个巨大的安全漏洞。这将使网络钓鱼变得非常容易。

要实现您的需求,最好的办法是充当代理。使用例如,以编程方式自己创建并触发 HTTP 请求URLConnection 或 Apache HTTPComponents 客户端并将其响应通过管道传递给 servlet 响应。但是请注意,浏览器地址栏中的 URL 仍然是您的 Web 服务器的 URL。

这是一个使用 URLConnection 的启动示例:

URLConnection connection = new URL("http://other.com").openConnection();
// Set headers if necessary via setRequestProperty().

InputStream input = connection.getInputStream();
OutputStream output = response.getOutputStream();
// Copy response body from input to output.

关于java - 更改 servlet header 并重定向到过滤器中的其他 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14643287/

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