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

提交前Xcode测试Safari扩展遇资源加载权限问题求助

Safari Web扩展加载本地词典文件权限问题排查方案

问题核心

在Xcode测试Safari Web扩展时,加载DataJ/diqo.txt文件报错:

Failed to load resource: You do not have permission to access the requested resource.

该扩展在Chrome、FireFox中运行正常,已通过xcrun safari-web-extension-converter ... --copy-resources --macos-only导入Xcode,Manifest v2中配置了"web_accessible_resources": [ "diqo.txt" ]。

排查与解决步骤

  • 修正Manifest路径配置
    代码中加载路径是DataJ/diqo.txt,但Manifest里只写了diqo.txt,Safari对资源路径的匹配要求比Chrome/FireFox严格,必须完全一致。把Manifest的配置改成:

    "web_accessible_resources": [ "DataJ/diqo.txt" ]
    

    注意:如果chargerLexique函数是在扩展自身上下文(后台脚本、弹出页)运行,其实不需要配置web_accessible_resources(这个配置是给外部网页访问扩展资源用的),这时优先检查路径和资源打包状态。

  • 确认Xcode中资源的打包状态

    1. 打开Xcode项目,左侧文件导航栏里找到DataJ文件夹,检查diqo.txt是否存在;
    2. 选中diqo.txt,查看右侧Identity and Type面板,确认Target Membership已勾选你的Safari扩展目标;
    3. 如果资源未正确导入,手动将DataJ文件夹拖进Xcode,选择"Copy items if needed"并勾选对应目标。
  • 调试资源实际访问路径
    在chargerLexique函数里先打印生成的资源URL,确认路径是否正确:

    const chargerLexique = async () => {
      try {
        const resourceUrl = browser.runtime.getURL('DataJ/diqo.txt');
        console.log("实际资源URL:", resourceUrl); // 打印URL用于排查
        const response = await fetch(resourceUrl);
        // ... 后续逻辑
      } catch (error) {
        console.error("词典加载错误:", error);
      }
    };
    

    打开Safari开发者工具,查看扩展的资源列表,对比打印的URL是否能找到对应文件。

  • 尝试Manifest配置增强(针对网页上下文访问场景)
    如果是网页端需要访问该资源,可修改Manifest为更明确的格式,指定允许访问的来源:

    "web_accessible_resources": [
      {
        "resources": ["DataJ/diqo.txt"],
        "matches": ["<all_urls>"]
      }
    ]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:25:07