| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1132 人关注过本帖
标题:防盗链图片的filter的问题。
只看楼主 加入收藏
zhuhe
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:20
注 册:2010-12-14
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
防盗链图片的filter的问题。
防盗链图片的filter
public class ImageRedirectFilter implements Filter {

public void init(FilterConfig config) throws ServletException {
}

public void doFilter(ServletRequest req, ServletResponse res,
   FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;

// 禁止缓存
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragrma", "no-cache");
response.setDateHeader("Expires", 0);

// 链接来源地址
String referer = request.getHeader("referer");
System.out.println("refer is"+referer);

if (referer == null || !referer.contains(request.getServerName())) {

   /**
    * 如果 链接地址来自其他网站,则返回错误图片
    */
   request.getRequestDispatcher("/error.gif").forward(request,response);

} else {

   /**
    * 图片正常显示
    */
   chain.doFilter(request, response);
}

}

public void destroy() {
}
}
/////////////////////////////////////////////////////
web.xml:

<filter-mapping>
<filter-name>imageRedirectFilter</filter-name>
    <url-pattern>/upload/images/*</url-pattern>
</filter-mapping>

问题:红色的那句并不能请求转移而显示error.gif的图片。
必须将红色的那句写成:request.getRequestDispatcher("error.jsp").forward(request,response);
在error.jsp中再显示error.gif图片才可以,为什么?
error.jsp内容如下:
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'error.jsp' starting page</title>
   </head>
 
  <body>
  <%=path %><br>
  <%=basePath %><br>
    <img src="error.gif">
    </body>
</html>
搜索更多相关主题的帖子: 防盗 图片 request public chain 
2012-01-29 23:22
空空儿
Rank: 2
等 级:论坛游民
威 望:2
帖 子:13
专家分:28
注 册:2011-6-15
收藏
得分:20 
可能还是图片要通过页面来显示吧,直接显示图片或许就变成了下载图片。
2012-02-02 10:58
王智钟
Rank: 2
等 级:论坛游民
威 望:1
帖 子:7
专家分:20
注 册:2012-2-1
收藏
得分:0 
你好,你的写的代码就是一个过滤类,但是你的图片要显示在界面上,必须把图片定义在JSP,你猜可以调用到图片,很简单。你要注意学习JSP的基础知识与概念!希望你能够尽快的掌握吧。
2012-02-09 10:49
zhuhe
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:20
注 册:2010-12-14
收藏
得分:0 
回复 3楼 王智钟
大哥,请您说明白点,什么是“把图片定义在JSP”?
这句话 request.getRequestDispatcher("/error.gif").forward(request,response);是书中的例子,不成功,我才改为request.getRequestDispatcher("error.jsp").forward(request,response);
然后再在error.jsp中再显示error.gif图片,这样才可以。

请您明示 request.getRequestDispatcher("/error.gif").forward(request,response);这语句有无问题?能否请求转发到图片?(请求转发到JSP页面肯定没有问题)谢谢!
2012-02-12 22:28
快速回复:防盗链图片的filter的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012631 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved