2

我对 servlet 很陌生,我希望执行以下操作。

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

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

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

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

  1. request通过放置我知道的身份验证密钥来更改传入的标头

  2. 并使用该身份验证标头将其重定向request到其他 url,www.test.com以便该特定请求的响应将是www.test.com

有可能这样做吗?

我试过这些:

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

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

提前致谢。

4

1 回答 1

1

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

为了实现您的需求,您最好的选择是充当代理。使用例如以编程方式创建并触发 HTTP 请求URLConnection,并将其响应通过管道传输到 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.
于 2013-06-25T01:50:37.713 回答