从 URL.createObjectURL 创建的 blob URL 中取回 Blob 对象

Get Blob object back from blob URL created with URL.createObjectURL

我发现的每个问题都告诉我,取回对象的唯一方法是使用 ajax 请求获取它,并使用 blob:https://www.example.com/0ea6c8a8-732f-42c7-9530-4805c4e785f5 作为目标 url。 blob 是否没有保存在我的浏览器内存中,因此应该可以立即访问?按照我的理解,它与远程 server/website 无关。一些 JS 文件创建了 blob 对象,生成了 blob URL 并将其保存在内存中。

我尝试在几个网站上使用 let blob = await fetch(url).then(r => r.blob());,在 cors 限制中总是 运行。也许只允许创建它的脚本(不同的域)在其上下文中访问它,考虑到 blob 内容确实保存在我的浏览器内存中,这是非常不幸的。

我知道通过观察网络请求访问 blob 指向或包含的资源的其他方法。那不是我在这里要问的。我想了解如何解压缩 blob URL 以访问浏览器控制台内的 Blob 对象,以首先查看信息是如何保存的。对于视频,由于大小和带宽限制,Blob 根本无法包含实际视频,那么它包含什么?清单文件本身?

请参阅 this answer of mine 以了解从 blob 检索 Blob 的方法:URI(在页面创建 Blob 之前,您需要 运行 那里的脚本)。获取只会创建一个副本。

Blob:URL 链接到远程服务器,因为它共享相同的来源。所以是的,Blob(二进制数据)在您的计算机上,但是 URL 只能由脚本访问 运行ning 来自与生成它的来源相同的脚本。

是的,Blob 确实包含所有视频数据,但您拥有的字符串是一个 blob:URL,它只是指向该 Blob 的指针,它本身存储在浏览器的内存中。