我是 servlet 的新手,我想做以下事情。
我的位置设置了一个过滤器:
void doFilter( ServletRequest request,
ServletResponse response,
FilterChain chain ) throws IOException, ServletException
{
}
当某些 URL 与模式匹配时,将调用这些过滤器。
在此方法中,我希望这样做:
通过放置我知道的身份验证密钥来更改传入的
request
标头有了该身份验证标头,将
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.