Http请求防盗链

编程入门 行业动态 更新时间:2024-10-28 14:21:56

Http请求<a href=https://www.elefans.com/category/jswz/34/1739346.html style=防盗链"/>

Http请求防盗链

什么是防盗链

比如A网站有一张图片,被B网站直接通过img标签属性引入,直接盗用A网站图片展示。
尤其是视频网站

如何实现防盗链

判断http请求头Referer域中的记录来源的值,如果和当前访问的域名不一致的情况下,说明该图片可能被其他服务器盗用。
使用过滤器拦截请求,判断请求头中的域名与需要限制的域名访问是否一致,如果不一致的情况,说明可能被盗用。

使用过滤器判断请求头Referer记录请求来源

@WebFilter(filterName = "imgFilter", urlPatterns = "/imgs/*")
public class ImgFilter implements Filter {//限制的访问域名@Value("${domain.name}")private String domainName;public void init(FilterConfig filterConfig) throws ServletException {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) request;String referer = req.getHeader("Referer");if (StringUtils.isEmpty(referer)) {request.getRequestDispatcher("/imgs/error.png").forward(request, response);return;}String domain = getDomain(referer);if (!domain.equals(domainName)) {request.getRequestDispatcher("/imgs/error.png").forward(request, response);return;}chain.doFilter(request, response);}/*** 获取url对应的域名** @param url* @return*/public String getDomain(String url) {String result = "";int j = 0, startIndex = 0, endIndex = 0;for (int i = 0; i < url.length(); i++) {if (url.charAt(i) == '/') {j++;if (j == 2)startIndex = i;else if (j == 3)endIndex = i;}}result = url.substring(startIndex + 1, endIndex);return result;}public void destroy() {}
}

更多推荐

Http请求防盗链

本文发布于:2024-03-09 20:45:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726073.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:防盗链   Http

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!