计算机网络之防盗链技术&时间撮方式防止浏览器缓存

本文探讨了网站资源防盗链的实现方法,包括利用Nginx和Java代码进行防盗链判断,以及如何通过在URL后添加时间戳来防止浏览器缓存,确保网站更新时用户获取最新内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天要谈谈基础知识以外的东西。

比如,未来的某一天,笔者开发了一个很受欢迎的网站,而该网站上的图片、视频非常多。树大招风的原因,经常受到某些人觊觎,不仅想盗取本博主的资源,还想搞点儿事情!

  • 那么,如何防止别人盗取自己的资源(图片,视频,文件),防盗链可以了解一下。
    1. 防盗链实现原理:

      • 利用Http协议中的refferer字段,通过Java代码,可以进行防盗判断。
        在这里插入图片描述

      • 利用nginx可是实现防盗链。

    2. 防盗链实现技术代码

      • 其一,利用Nginx可以实现防盗链,在此本文不做过多追叙。

      • 其二,利用Java代码实现防盗链,其实就是在过滤器中,获取请求头字段referer字段进行判断。过滤器在框架中都可以实现,这里简单使用Servlet的过滤器来实现。

      • 还有,字段refferer的含义是:当前请求来自于哪里。当请求URL中不包含referer,则说明图片被盗取,那么这时可以在过滤器中进行恶搞。

        	@Override
        	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        			throws IOException, ServletException {
        		// 进行强转
        		HttpServletRequest req = (HttpServletRequest) request;
        		HttpServletResponse resp = (HttpServletResponse) response;
        		// 获取请求头referer字段
        		String referer = req.getHeader("referer");
        		// 获取请求域名
        		String currentServr = req.getServerName();
        		// null表示直接引用图片(没有请求Header情况), 没有发起请求
        		if(referer == null || !referer.contains(currentServr)) {
        			// 防盗处理
        			req.getRequestDispatcher("...自由发挥, ").forward(req, resp);
        			return ;
        		}
        		chain.doFilter(req, resp);
        	}
        
  • 弄完防盗链,我们可以看看如何在不手动设置的情况下,禁止浏览器进行缓存。
    1. 为什么要禁止浏览器缓存?

      • 试想,每次发生版本更新的时候,客户端可以使用安装包进行更新。那么网站又不能使用安装包进行更新。
      • 所以,我们可以在网站发布版本之前,都会在URL请求地址后面加上时间戳进行版本更新。
    2. 最后,给读者们一个小实践,请打开任意网站和开发者工具,点击network,观察请求中的图片资源,就会发现存在时间撮。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值