我想使用以下代码打开并读取本地json文件,但控制台向我抛出一条错误消息msg“ jsonTest.html:21无法加载文件:/// C:/ Users / EFUXTIA / Desktop / web /data.json:仅协议方案支持跨源请求:http,数据,chrome,chrome扩展名,https。”这与拒绝访问相同。
我认为data.json的路径出了点问题,但是我找不到一个好的解决方案。
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
function getdata()
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(xhttp.readyState==4 && xhttp.status==200)
{
var javaobj = JSON.parse(xhttp.response);
document.getElementById('div1').innerHTML = javaobj.name;
}
};
xhttp.open("GET", "file://localhost/C:/Users/EFUXTIA/Desktop/web/data.json", true);
xhttp.send();
}
</script>
</head>
<body>
<input type = "button" name="name" onclick="getdata()" value="Click" />
<div id="div1"></div>
</body>
</html>
感谢您的帮助!
答案 0 :(得分:0)
您不能真正将file:///
用于网站,它有很多安全限制,这是有充分理由的。如果要测试页面,请在页面所在的目录中运行一个简单的http服务器,并将http://
用于所有资源URL。
file:///
协议是一种本地文件系统协议,用于从文件系统中的任意位置将单个资源加载到浏览器中。这意味着它可以访问磁盘上的所有内容,包括密码文件,Windows驱动程序,Unix主目录等。如果在目录中允许file:///
,则非常是不安全的混合协议上下文。因此,它无法与XHR一起使用,以这种方式加载的文件本身无法XHR,甚至无法加载大多数相关资源,等等。
基本上:从不使用file:///
。用于在浏览器主窗口中将任意文件加载到计算机上。如果您除了“只加载它”外还需要执行其他操作,请不要使用它。