请告诉我,为什么本地javascript无法打开本地文件?我正在尝试创建一个简单的javascript/html应用程序,该应用程序将从本地文件系统在本地计算机上运行.此应用程序尝试使用不同的方法读取配置文件(json),但会出现以下错误(Chrome):
在XMLHttpRequest的情况下,方法open("GET", filename, true)
抛出异常:
XMLHttpRequest无法加载file:/// bla-bla-bla.交叉源请求仅支持协议方案:http,data,chrome,chrome-extension,https,chrome-extension-resource.
如果document.createElement("iframe").src=filename
我有另一个例外:
VM596:1未捕获的DOMException:无法从'HTMLIFrameElement'读取'contentDocument'属性:阻止一个原始"null"的帧访问跨源帧."
如果var f=new File([], filename, { type: "text/plain" });
我的File对象的大小为零,并且根本没有错误.然后FileReader返回一个空结果.
所以,我的问题是:为什么它是"跨性别"?这些文件存储在同一目录中!我如何从运行脚本的同一源/目录中打开本地文件?请帮忙.
PS:是的,我知道,--allow-file-access-from-files
但我需要由客户来管理.
为什么它是"交叉起源"?这些文件存储在同一目录中!
因为Chrome认为所有 file://
网址都是相互交叉的.
我如何从运行脚本的同一源/目录中打开本地文件?
来自Chrome?你没有.除非你完全使用命令行选项禁用CORS(这是一个坏主意,因为它很容易忘记你已经设置了命令行选项并上网冲浪,让你自己敞开大门去利用事实上你已经禁用了网络安全性.
其他浏览器可能会以null
不同方式处
而是运行本地Web服务器并通过本地Web服务器使文件可用.然后您可以访问它们,因为它将是同源http
URL,而不是file
URL.或者使用十几个框架中的任何一个,让您使用JavaScript编写应用程序(而不是使用浏览器).或者是一个提供文件的简单NodeJS脚本(大约10行).等等.