更改 servlet 标头并重定向到过滤器中的其他 url



我是 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?

提前谢谢。

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

要实现您的需求,最好的选择是充当代理。自己以编程方式创建和触发 HTTP 请求,例如 URLConnection或Apache HTTPComponents Client,并将其响应通过管道传输到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.

相关内容

  • 没有找到相关文章

最新更新