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

xiaoxiao2025-05-30  14

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

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

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

防盗链实现原理:

利用Http协议中的refferer字段,通过Java代码,可以进行防盗判断。

利用nginx可是实现防盗链。

防盗链实现技术代码

其一,利用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); }

弄完防盗链,我们可以看看如何在不手动设置的情况下,禁止浏览器进行缓存。

为什么要禁止浏览器缓存?

试想,每次发生版本更新的时候,客户端可以使用安装包进行更新。那么网站又不能使用安装包进行更新。所以,我们可以在网站发布版本之前,都会在URL请求地址后面加上时间戳进行版本更新。

最后,给读者们一个小实践,请打开任意网站和开发者工具,点击network,观察请求中的图片资源,就会发现存在时间撮。

转载请注明原文地址: https://www.6miu.com/read-5030964.html

最新回复(0)