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

解决iOS11下Cordova7加载内部Blob报错:Not allowed to load local resource

解决iOS 11上cordova-plugin-iosrtc的Blob加载报错问题

你遇到的Not allowed to load local resource: blob:blobinternal:///错误,本质是iOS 11的WebView安全限制与cordova-plugin-iosrtc内部Blob处理机制的冲突,结合Cordova 7(iOS引擎4.5+)的环境,我给你整理了几个针对性的解决步骤:

1. 调整Content Security Policy(CSP)允许Blob协议

首先修改项目根目录下的config.xml,确保CSP规则允许加载Blob资源:

  • 找到<meta>标签中的content-security-policy配置,在connect-src、img-src、media-src这些指令中添加blob:协议。
  • 示例配置:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; media-src 'self' blob:; connect-src 'self' blob:; img-src 'self' blob: data:;">

注意:如果你的项目使用WKWebView,还需要确保CSP没有过度限制本地资源加载。

2. 启用插件的Blob支持偏好设置

在config.xml中添加cordova-plugin-iosrtc的专属偏好配置,强制开启Blob兼容:

<preference name="iosrtcBlobSupport" value="true" />

这个配置会让插件内部调整Blob的创建和URL生成逻辑,适配iOS 11的WebView环境。

3. 适配插件的Blob处理API

确保你在代码中正确使用插件提供的Blob相关方法,而不是原生的Web API:

  • 初始化插件时先调用iosrtc.registerGlobals(),这会替换原生的Blob、MediaStream等对象为插件兼容版本。
  • 如果需要将Blob转换为可加载的URL,使用插件的iosrtc.createObjectURL()方法替代原生的URL.createObjectURL(),避免生成blobinternal://这类被iOS 11拦截的URL。

4. 确保插件和Cordova iOS引擎的版本兼容

  • 把cordova-plugin-iosrtc升级到支持iOS 11的最新稳定版本(建议v6.0.0及以上),可以通过以下命令更新:
cordova plugin remove cordova-plugin-iosrtc
cordova plugin add cordova-plugin-iosrtc@latest
  • 同时确认Cordova iOS引擎版本保持在4.5.5以上(避免旧版本的WebView安全bug),可以用cordova platform update ios@4.5.5更新。

额外排查点

如果以上步骤还没解决问题,检查:

  • 是否在config.xml中开启了WKWebView?如果是,需要确保插件的iosrtcWKWebViewEnabled偏好设为true:
<preference name="iosrtcWKWebViewEnabled" value="true" />
  • 确认iOS 11设备的WebView没有启用额外的安全限制(比如企业级应用的MDM配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:53:11