前端开发人员对防盗链这个概念一定不会生疏,类似上面这种图一定见过不少,微信等一些大的平台几乎都做了防盗链处理,那么问题来了什么是防盗链,为何要做防盗链工作?
1.先讲讲防盗链:顾名思义就是不符合规定的人(这里指的是网络请求)拿不到相应的东西,被盗链的东西多见于图片等资源,如果不想让他人随便就拿到自己做出来的东西
2.如何防盗链,使用nginx可以轻松实现防盗链工作,这里涉及到nginx的一个指令valid_referers以及一个全局变量$invalid_referer:
location ~ .*.(jpg|jpeg|png|bmp|swf)$ {
#access_log on;
add_header Cache-Control no-store;
valid_referers www.xxx.com;
if ($invalid_referer) {
return 403;
}
root C:/Users/xxx/Pictures;
expires 2m;
}
valid_referers语法:
valid_referers none
| blocked
| server_names
| string
...;
none---请求包头没有Referer字段,这种情况就是使用图片网址获取图片的情况
blocked--Referer字段存在,但是没有了https或者http开头,可能被防火墙或者代理服务器改变所致
server_names--允许的服务器域名,我们在使用时可以仅仅使用该项即可
防盗链与盗链的斗争远没有结束,上述方式只是禁止了简单的网页爬虫爬到的网页轻松可用(内容虽然爬到了,但是图片不能使用)