作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 servlet 的新手,我希望执行以下操作。
我在我的地方设置了一个过滤器:
void doFilter( ServletRequest request,
ServletResponse response,
FilterChain chain ) throws IOException, ServletException
{
}
当某些 url 与模式匹配时,将调用这些过滤器。
在这个方法中,我希望这样做:
通过输入我知道的身份验证 key 来更改传入的请求
header
并在适当的地方使用该身份验证 header 将 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 请求的 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/
我是一名优秀的程序员,十分优秀!