Glide自定义请求头

在使用Glide的时候一般都不会考虑添加请求头。

但有些时候(抓图)会因为“防盗链”的原因,图片显示不出来。这时候就需要添加请求头,以获取图片资源。

什么是“防盗链”?

防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站资源展示页面的资源链接失效。

一般的防盗链原理也很简单,都是服务器验证请求头的RefererHost的值,最多再加上cookie验证。如果你复制了这个图片地址,然后直接到浏览器地址上面访问是无法显示的,因为请求里面没有验证的值。

在Gilde上添加请求头

实现Headers接口,重写getHeaders()方法:

    
    public interface Headers {

        @Deprecated
        Headers NONE = new Headers() {
            @Override
            public Map<String, String> getHeaders() {
                return Collections.emptyMap();
            }
        };
        
        Headers DEFAULT = new LazyHeaders.Builder().build();

        Map<String, String> getHeaders();

    }

实现方式:

    @Override
    public Map<String, String> getHeaders() {
        Map<String, String> header = new HashMap<>();
        //不一定都要添加,具体看原站的请求信息
        header.put("Referer", "__查看下Referer中需要添加的值__");
        header.put("Host","__查看下Host中需要添加的值__")
        return header;
    }

调用:

    
    /*
     * url : 请求地址
     * headers : 已实现的Headers实例
     */
    headers = new headers(){
        @Override
        public Map<String, String> getHeaders() {
             ...
        }
    }

    GlideUrl gliderUrl = new GlideUrl(url,headers)
    
    //显示图片
    Glide.with(context).load(gliderUrl).into(imageView);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://www.91ri.org/tag/fuzz-bug 通常情况下,有三种方法被广泛用来防御CSRF攻击...
    jdyzm阅读 9,648评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 《老男孩Linux运维》笔记 隐藏Nginx软件版本号 一般来说,软件的漏洞都和版本有关。因此要尽量隐藏对访问用户...
    Zhang21阅读 9,082评论 0 28
  • ngx_http_rewrite_module是Nginx服务器的重要模块之一,它一方面实现了URL的重写功能,另...
    吃瓜的东阅读 4,890评论 0 1
  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 7,703评论 0 6