Ionic/Capacitor iOS端获取嵌入MP3文件返回HTTP状态码0问题排查
问题原因分析
核心原因:WKWebView对本地媒体资源的特殊处理逻辑
Capacitor 6.2在iOS上基于WKWebView运行,你遇到的状态码0是WKWebView针对file://协议下媒体资源的非标准状态码返回,并非真正的请求失败:
- 对于TXT这类文本资源,WKWebView会按常规文件协议流程处理,返回标准200状态码;
- 对于MP3这类媒体资源,WKWebView出于媒体播放安全隔离策略,会强制将fetch请求的状态码置为0,但实际已经成功读取了资源内容——这就是为什么忽略状态码能拿到MP3数据的原因。
“资源请求不安全”提示的本质
Safari调试面板显示的“资源请求不安全”并非指HTTP协议不安全,而是因为本地资源使用的是file://协议。WKWebView默认将file://协议下的媒体资源标记为非安全范畴,这是WebView的固有行为,和调试机制无关。
NSAllowsArbitraryLoadsInWebContent无效的原因
这个Info.plist配置仅针对HTTP/HTTPS协议的跨域或非安全HTTP请求生效,完全不适用file://协议的本地资源,所以修改该配置对当前问题没有任何帮助。
内容的提问来源于stack exchange,提问作者Elroy Flynn
相关产品推荐
相关产品推荐

