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

Android项目创建本地Worker时持续出现CORS问题求助

解决Android WebView中本地Worker的CORS问题

排查方向与修复步骤

  • 检查WebView跨域核心设置
    Android 11及以上版本对WebView本地文件访问限制更严格,必须显式开启以下配置:

    WebSettings webSettings = webView.getSettings();
    webSettings.setAllowUniversalAccessFromFileURLs(true);
    webSettings.setAllowFileAccess(true);
    webSettings.setAllowFileAccessFromFileURLs(true);
    

    其中setAllowFileAccessFromFileURLs在Android 16+默认关闭,是本地文件加载Worker的关键开关。

  • 规范Worker文件的加载路径
    直接使用file:///android_asset/前缀指向assets目录下的Worker文件,避免相对路径导致的解析问题:

    const worker = new Worker('file:///android_asset/worker.js');
    

    若Worker存放在其他目录,需确保路径符合Android文件URI规范,且WebView具备对应目录的访问权限。

  • 拦截Worker请求绕开CORS检查(Android 12+)
    Android 12及以上新增资源访问限制,可通过WebViewClient手动处理Worker文件请求:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
            String url = request.getUrl().toString();
            if (url.endsWith("worker.js")) {
                try {
                    InputStream inputStream = getAssets().open("worker.js");
                    return new WebResourceResponse("application/javascript", "UTF-8", inputStream);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return super.shouldInterceptRequest(view, request);
        }
    });
    
  • 核对Manifest权限配置
    针对Android 10及以下版本,需添加外部存储权限:

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

    Android 10+若需访问外部存储的Worker文件,可临时添加android:requestLegacyExternalStorage="true"到application标签(仅兼容用,建议优先适配分区存储)。

额外排查点

  • 对比之前成功项目的WebView版本、Worker文件位置、系统版本差异,定位是否为版本特有限制;
  • 若使用Jetpack Compose WebView或第三方WebView库,确认库本身是否默认禁用本地文件跨域访问,需针对性开启对应配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:07:42