You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

App中Glide加载http://开头图片失败,https://可正常显示求助

HTTP图片无法加载的原因与解决方案

核心原因

Android 9.0(API 级别 28)及以上系统默认启用明文网络请求限制,禁止App发起未加密的HTTP请求,仅允许HTTPS请求。Glide作为图片加载框架,会遵循系统的网络安全策略,导致HTTP链接的图片无法加载。

具体解决方案

1. 配置网络安全配置文件(推荐)

这是最安全且灵活的方案,既可以全局允许明文请求,也可以针对特定域名开放:

  • 在res/xml目录下创建network_security_config.xml文件,内容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <!-- 全局允许明文请求 -->
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>
    
    若只想允许特定HTTP域名的图片加载,可修改为:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">你的HTTP图片域名</domain>
        </domain-config>
    </network-security-config>
    
  • 在AndroidManifest.xml的<application>标签中添加配置引用:
    android:networkSecurityConfig="@xml/network_security_config"
    

2. 降低targetSdkVersion(不推荐)

将Module级build.gradle中的targetSdkVersion设置为27或更低,这样系统不会启用明文网络限制。但此方法会降低App的安全性,不建议用于正式发布版本。

3. 配合OkHttp自定义Glide配置(需集成OkHttp)

如果你的Glide集成了OkHttp,可以通过自定义OkHttpClient来适配,但本质仍需依赖网络安全配置:

OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
// 配置Glide使用自定义OkHttp
Glide.get(context).getRegistry().replace(GlideUrl.class, InputStream.class,
        new OkHttpUrlLoader.Factory(okHttpClient));

内容的提问来源于stack exchange,提问作者mahmoud elmahgoub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:22:42