我是servlet的新手,我希望做到以下几点。
我在我的位置设置了过滤器:
void doFilter( ServletRequest request,
ServletResponse response,
FilterChain chain ) throws IOException, ServletException
{
}
当某个网址与模式匹配时,系统会调用这些过滤器。
在这个方法中,我希望这样做:
通过添加我知道的authenticaton密钥来更改传入的request
标头
使用该身份验证标头将request
重定向到其他网址www.test.com
,以便该特定请求的响应将是www.test.com
的结果
是否可以这样做?
我试过这些:
response.setHeader("WWW-Authenticate","Basic MyKey")
response.setHeader("Location","www.google.com")
但在此之后该怎么办?如何将网页重定向到google.com?
提前致谢。
答案 0 :(得分:1)
那是(幸运的是)不可能。如果您可以作为Web服务器控制Web客户端向任意域发出的HTTP请求的标头,那将是一个巨大的安全漏洞。它会使网络钓鱼变得非常容易。
为了实现您的需求,您最好的选择是充当代理人。使用例如编程方式自己创建和激活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.