Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我可以获取数据URI? 为什么fetch()对数据URI起作用?_Javascript_Blob_Data Uri - Fatal编程技术网

Javascript 为什么我可以获取数据URI? 为什么fetch()对数据URI起作用?

Javascript 为什么我可以获取数据URI? 为什么fetch()对数据URI起作用?,javascript,blob,data-uri,Javascript,Blob,Data Uri,不久前,当我学习如何使用XMLHttpRequest和fetch时,我发现除了HTTP请求之外,没有任何文档说明这些方法可以用于任何东西。我在Firefox和Chrome上都试过,得到了同样的结果。你自己试试看 (异步函数(){ 让dataURI='data:text/plain',+encodeURIComponent('Why this work?'), fetchResponse=等待获取(dataURI), fetchBlob=等待fetchResponse.blob(); log(U

不久前,当我学习如何使用
XMLHttpRequest
fetch
时,我发现除了HTTP请求之外,没有任何文档说明这些方法可以用于任何东西。我在Firefox和Chrome上都试过,得到了同样的结果。你自己试试看

(异步函数(){
让dataURI='data:text/plain',+encodeURIComponent('Why this work?'),
fetchResponse=等待获取(dataURI),
fetchBlob=等待fetchResponse.blob();
log(URL.createObjectURL(fetchBlob));

})()
如果请求方法为GET,
数据:
文件:
,以及
http[s]:
,则fetch算法允许向
发出关于:blank
blob:
的请求

因为XMLHTTPRequest执行相同的原始请求,所以它甚至有进一步的限制,与
数据无关:
,但我在中描述了这一点


因此,获取
数据:
URI是完全有效的,它甚至是将这样的URI转换为Blob的一种常见方式。

它们适用于浏览器支持的所有方案,包括
文件
数据
Blob
。哦,太酷了。谢谢你让我知道:)@Bergi不是全部,不。
ftp:
电话:
mailto:
等。例如,不允许,
about:
只能是唯一的URI
about:blank
,更不用说。@Kaido ftp、电话和电子邮件不受web浏览器支持,后两者甚至都不涉及内容。我也没有计算
chrome://
schemes和类似的内部结构,或者任何涉及操作系统的东西。但是浏览器可以打开的文件通常可以被获取,这就转化为新的协议,如
ipfs
。@Bergi你的浏览器没有集成ftp客户端吗?你用的是什么浏览器?它没有rss阅读器吗?当你点击一个mailto链接时,它不能正确地打开你的邮件管理器吗?所有这些都是网络浏览器支持的方案。ipfs或onion等方案仍然不是规范的一部分,因此,尽管一些浏览器可能会偏离规范以支持获取这些方案,但这并不会改变只允许非常有限的方案集。