完善HandlerInterceptor拦截器preHandle()方法,开启静态资源防盗链,拦截非法的post请求(附配置方法及教程)

分享 未结 2 574
瓦刀
瓦刀 站长 2020年4月19日 20:31 编辑
点击群号免费加入尼特社区交流群:955295791
<p id="descriptionP"><h2 id="91d1bc35-721b-8845-c872-4ae723ba0644" style="margin-top: 0px; margin-bottom: 0px; color: rgb(51, 51, 51); font-size: 24px;">功能上线</h2><p style="margin-top: 0px; margin-bottom: 0px; color: rgb(102, 102, 102);">本站已开启静态资源防盗链~</p><p style="margin-top: 0px; margin-bottom: 0px; color: rgb(102, 102, 102);">源码已同步至<a href="https://github.com/yourkevin/NiterForum/" target="_blank" style="color: rgb(1, 170, 237);"><img src="https://api.d5.nz/api/favicon/?url=https://github.com/yourkevin/NiterForum/" layer-index="0" style="max-width: 100%; height: 12px;">Github</a>与<a href="https://gitee.com/yourkevin/NiterForum/" target="_blank" style="color: rgb(1, 170, 237);"><img src="https://api.d5.nz/api/favicon/?url=https://gitee.com/yourkevin/NiterForum/" layer-index="1" style="max-width: 100%; height: 12px;">码云</a></p><p style="margin-top: 0px; margin-bottom: 0px; color: rgb(102, 102, 102);"><br></p><h2 id="006d7d54-428c-baeb-e474-bdfc11d5d3b0" style="margin-top: 0px; margin-bottom: 0px; color: rgb(51, 51, 51); font-size: 24px;">功能展示</h2><div style="color: rgb(102, 102, 102);">本功能可以防止img,js,css等静态资源被盗用,避免服务器压力过大,流量消耗过快。同时也可以拦截非法的post请求。</div><p>以防盗链为例,比如本站logo地址为</p><blockquote>https://niter.cn/images/logo.png</blockquote><p>如果把它复制插入到其它站点,请求将会被拦截,无法显示,快去尝试一下吧~(<a href="http://www.mawen.co/question/1038" target="_blank"><img style="height: 12px;" src="https://api.d5.nz/api/favicon/?url=http://www.mawen.co/question/1038">演示</a>,需要清除缓存才有效果,因为你正在看此贴,说明你现在已经加载的这张图片)</p><p></p><p></p><p><br></p><h2 id="006d7d54-428c-baeb-e474-bdfc11d5d3b0" style="margin-top: 0px; margin-bottom: 0px; color: rgb(51, 51, 51); font-size: 24px;">配置方法(教程)</h2><blockquote>/cn/niter/forum/interceptor/SessionInterceptor.java</blockquote><p>找到以上文件,在preHandle()方法,最前方加上以下代码</p><pre><code>String referer = request.getHeader("referer");<br> String host = request.getHeader("host");<br> //处理静态资源<br> if (handler instanceof ResourceHttpRequestHandler){<br> if(referer!=null&amp;&amp;(!host.equals(referer.split("//")[1].split("/")[0]))){<br> response.setStatus(403);<br> return false;<br> }<br> return true;<br> }<br><br> //拦截非本站post请求,如果你需要改造为前后端分离项目,请留意这里<br> String origin = request.getHeader("origin");<br> if(origin!=null&amp;&amp;(!host.equals(origin.split("//")[1])||referer==null)){<br> response.setStatus(406);<br> return false;<br> }</code></pre></p>
收藏(0)  分享
相关标签: preHandle 防盗链 springboot post
注意:本文归作者所有,未经作者允许,不得转载
2个回复