基于django中间件的防盗链,利用meta中的http_referer

简单实现防盗链功能

主要思路:

1.在中间件中设置process_request

2.利用http_referer来判断请求连接是否是本域名或ip地址发来的

class ReferMiddle(MiddlewareMixin):
    def process_request(self, request):
        # 从request中取出meta
        meta = request.META
        print(meta.get('HTTP_REFERER'))
        print(meta)
        # 判断meta中的HTTP_REFERERkey是否有值,没有就继续允许访问
        if not meta.get('HTTP_REFERER'):
            return None
        else:
            # 判断referer中的域名或ip地址是否是本服务器的,是就允许访问
            http_referer = meta.get('HTTP_REFERER').split(":")
            print(http_referer[1])
            if http_referer[1] == "//192.168.3.118":
                return None
            # 不是就返回error页面
            else:
                return render(request,"error.html")

 

posted @ 2019-01-27 15:19  Maple_feng  阅读(1672)  评论(0编辑  收藏  举报