не удается загрузить локальный файл с xhttp.open - PullRequest
0 голосов
/ 03 июля 2018

Я хочу открыть и прочитать локальный файл json с кодом ниже, но консоль выдает сообщение об ошибке "jsonTest.html: 21 Не удалось загрузить файл: /// C: / Users / EFUXTIA / Desktop / web /data.json: Запросы между источниками поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, 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>​

спасибо за помощь !!!

1 Ответ

0 голосов
/ 03 июля 2018

Вы действительно не можете использовать file:/// для веб-сайтов, у него множество ограничений безопасности по очень веским причинам. Если вы тестируете страницу, запустите простой http-сервер в каталоге, в котором находится эта страница, и используйте http:// для всех URL-адресов ваших ресурсов.

Протокол file:/// - это протокол локальной файловой системы для загрузки отдельных ресурсов в браузер из в любом месте в файловой системе. Это означает, что у него есть доступ ко всему на ваших дисках, включая файлы паролей, драйверы Windows, домашние каталоги Unix и т. Д. И т. Д. Было бы небезопасно , если бы file:/// был разрешен в смешанном контексте протокола , Как таковой, он не может использоваться с XHR, файлы, которые загружаются таким образом, сами не могут XHR, или даже загружать большинство относительных ресурсов и т. Д. И т. Д.

В основном: никогда не используйте file:///. Это для загрузки произвольных файлов на ваш компьютер в главном окне браузера. Если вам нужно сделать что-то кроме «загрузить его и только его», не используйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...