Javascript 有没有办法在Android Webview(使用CSP)上为WebWorker启用fileuri访问?

Javascript 有没有办法在Android Webview(使用CSP)上为WebWorker启用fileuri访问?,javascript,android-webview,web-worker,content-security-policy,file-uri,Javascript,Android Webview,Web Worker,Content Security Policy,File Uri,我在Firefox/Chrome/AndroidWebView上有一个现有的开源消息传递web应用程序,该应用程序已被最近的CSP3安全更改破坏 在Firefox/Chrome上可以通过将:configsecurity.fileuri.strict\u origin\u policy从默认值调整为false来避免这种情况。然而,我刚刚注意到,Android9WebView显然强制执行同样的行为,使得Android应用程序毫无用处,因为它无法加载Webworker网络部分 应用程序被拆分为UI和W

我在Firefox/Chrome/AndroidWebView上有一个现有的开源消息传递web应用程序,该应用程序已被最近的CSP3安全更改破坏

在Firefox/Chrome上可以通过将:config
security.fileuri.strict\u origin\u policy
从默认值调整为false来避免这种情况。然而,我刚刚注意到,Android9WebView显然强制执行同样的行为,使得Android应用程序毫无用处,因为它无法加载Webworker网络部分

应用程序被拆分为UI和Webworker部分,Webworker在其中处理网络流量。所有文件都是本地js文件,新的Webworker由主UI以相对文件路径加载。它用“importScripts”加载其他脚本。一切都运行良好,设计易于维护,最棒的是应用程序是完全本地的,无需通过网络加载任何内容(当然,实际消息除外)

不过,随着最近的浏览器版本更新,出现了一个问题。显然,新的CSP安全措施强制默认情况下不允许加载本地Webworker脚本

我尝试启用不同的CSP3 webworker src选项,但没有成功。现在恐怕没有了

Webworker with CSP允许对脚本进行相对文件访问就足够了

现在看起来是这样的:

<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src * 'unsafe-inline'; media-src *; img-src 'self' data:; connect-src ws://*;" />
并在内部加载以下脚本:

importScripts('cbor.js');
问题显然与中描述的基本相同 除了这个,它现在已经扩展到Android Webview

也许有一个CSP我就是想不出来?允许在相对于主文件的相对位置本地打开文件的东西


也许我可以将Webworker从服务器上移动以加载,但这不是一个真正的解决方案,因为它实际上是不可维护的。还有什么我可以试试的吗?谢谢

最终问题不在CSP中。如果WebSocket连接在没有TLS的情况下运行,Android 9或更高版本需要特定的
Android:usesCleartextTraffic=“true”
设置


此外,可以使用Android WebView WebSettings启用fileuri访问。默认情况下,这是由Cordova完成的。

这是您唯一需要更改的设置吗?我的
config.xml
中已经有了该设置,但我仍然看到了问题。另外,您使用的webview插件和版本是什么?我正在使用,并且我注意到,当我使用2.5.1版时,我与工人之间没有任何CSP问题。当我迁移到4.x时,问题就开始了。
importScripts('cbor.js');