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

如何在Flutter的webview_flutter中启用Android端HTTP站点访问

在Flutter WebView中允许Android加载HTTP站点的解决方案

问题场景

使用webview_flutter包开发Flutter应用时,iOS端已通过info.plist配置允许加载HTTP站点,但Android端配置了网络安全文件和Manifest参数后仍无法正常加载非HTTPS站点。

解决步骤

1. 确认网络安全配置文件的正确性

首先确保network_security_config.xml文件路径为android/app/src/main/res/xml/network_security_config.xml,若xml文件夹不存在需手动创建。

你可以选择全局允许所有明文流量(适合测试场景):

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</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>

2. 检查AndroidManifest.xml配置

确保application标签中同时包含以下两个配置:

  • android:usesCleartextTraffic="true":直接允许明文流量
  • android:networkSecurityConfig="@xml/network_security_config":引用上述网络安全配置文件

同时确认已添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />

完整的application标签示例:

<application
    android:name="${applicationName}"
    android:icon="@mipmap/ic_launcher"
    android:label="webview_demo"
    android:networkSecurityConfig="@xml/network_security_config"
    android:usesCleartextTraffic="true">

3. 验证WebViewController配置

确保你的WebViewController没有拦截HTTP请求,当前代码中的onNavigationRequest逻辑已允许所有请求,无需修改。如果后续遇到自签名HTTPS站点的问题,可额外添加证书信任逻辑,但针对HTTP站点无需此操作。

4. 清理缓存并重新编译

配置修改后,执行以下命令清理项目缓存并重新运行,确保新配置生效:

flutter clean
flutter run

注意事项

  • Android 9(API 28)及以上系统默认禁止明文HTTP流量,必须通过上述配置解除限制
  • 生产环境建议仅针对必要的HTTP站点配置允许,避免全局开放明文流量带来的安全风险

内容的提问来源于stack exchange,提问作者Areeba Jawed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:42:07