Javascript 为什么当我使用blob从ArrayBuffer加载资源时,chrome上出现“不允许加载本地资源”错误?

Javascript 为什么当我使用blob从ArrayBuffer加载资源时,chrome上出现“不允许加载本地资源”错误?,javascript,blob,arraybuffer,Javascript,Blob,Arraybuffer,我需要从ArrayBuffer加载一个图像。我看到一些文章说使用Blob是最有效的方法 这是我编写的将arraybuffer转换为BlobURL的代码 const blob = new Blob([new Uint8Array(arrayBuffer, offset,length)], { type: mimeType }); url = window.URL.createObjectURL(blob); 数组缓冲区是数组

我需要从ArrayBuffer加载一个图像。我看到一些文章说使用Blob是最有效的方法

这是我编写的将arraybuffer转换为BlobURL的代码

        const blob = new Blob([new Uint8Array(arrayBuffer, offset,length)], {
            type: mimeType
        });
        url = window.URL.createObjectURL(blob);
数组缓冲区是数组缓冲区的实例,它是通过切片XMLHttpRequest获取的另一个数组缓冲区创建的

然后,我尝试从生成的对象URL获取图像,如下所示

    const imgTag = new Image();
    imgTag.onload = () => {
      resolve(imgTag);
    };
    imgTag.onerror = (e) => {
      reject(e);
    };
    imgTag.src = url;
  });
但是我得到一个错误
不允许加载本地资源
。生成的对象url类似于
blob://https://localhost:9443/056abc73-c2d8-47dd-b2c7-24e1966a5221

我可以在firefox上访问生成的对象url。firefox不会像chrome那样抛出错误


有什么问题吗?

这是因为chrome有一些安全理由不允许从文件系统访问

打开获取错误的页面并检查url

如果是这样的话:

file:///C:/Users/desktopname/projectfolder//yourfile.html

您会看到url的第一个单词是file,这意味着您正在从文件系统访问文件,而chrome/oprea正在阻止您的请求

尝试在上运行项目(此链接可以在您选择的框架上运行项目。在我的情况下,我在visual studio上运行)


**我在chrome和opera web浏览器上发现了这个问题。这项工作在mozila firefox和microsoft Edge上进行。

由XMLHttpRequest获取
-跨域或同一域?同一来源。我从chromeSee中获取它看起来像是一个bug。实际上,我在该站点中不使用任何文件方案访问。我知道这一限制,我还没有发送任何可以被Chrome本地安全策略阻止的ajax请求。请附上网页截图以供进一步检查(请在截图中包含url链接)