AJAX request to local file system not working in Chrome?
我正在使用jQuery从XML动态创建UI。 我的jQuery在Firefox中工作,但在Chrome中它不起作用。 它给了我这个控制台错误:
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
以下是我的jQuery代码,它使用的是Firefox但不适用于Google Chrome:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $.ajax({
url: 'file:///home/satendra/dndExamples/avisDnD/file.xml',
success: function(xml) {
$(xml).find('Tab').each(function() {
var id = $(this).attr('URL');
var tab = $(this).attr('TabName');
$("ul").append("
<li>
"+ tab +"
</li>
");
});
}
}); |
-
你为什么一开始使用file:///!? 设置本地服务器。
-
网址应该像http url而不是文件路径
Firefox允许该请求,因为它接受对本地文件系统的请求(即file://协议),如果它们也来自那里。 但是,Chrome会拒绝所有XMLHttpRequests到file://网址。
请注意,您无法在任一浏览器中从外部域向本地文件系统发出AJAX请求 - 如果可以的话,这将是一个巨大的安全漏洞。
要使此AJAX请求在Chrome中运行,您需要向网络服务器发出请求。 如果您使用的是Windows,则可以在本地计算机上轻松安装IIS或WAMP。
请注意,可以在Google Chrome中启用允许从浏览器向本地文件系统发出请求的设置,但使用它确实不是一个好主意。 如果您决定继续这样做,可以在此处找到指南。
-
它可以完成,但必须首先更改chrome的设置,这绝对不可取但可以完成
-
@Deep是的,但这不是一个好主意,因为它会使你的机器非常脆弱。
-
完全同意你的看法。
-
如果OP想要的话,我添加了一个关于它的说明,但这完全是一个警告
-
@Deep:没有创建Web服务器的办法吗?
-
@RoryMcCrossan:谢谢先生快速回答:)
-
@vibog没问题,很高兴帮忙
-
@RoryMcCrossan:但是先生,我可以在没有网络服务器的情况下做到这一点
-
如果你想通过铬安全而不是
-
您可以使用我在Chrome中提到的设置,但正如我所说,我强烈建议您使用网络服务器。如果你在Windows上安装一个2分钟的工作。
-
@vibog,其他一些人也想做这个测试用途,这就是我提供的答案,在这里你去stackoverflow.com/questions/38288446/…
-
@RoryMcCrossan:是的,先生,你说我没问题,你的解决方案很棒。其实我正在研究由我创建的microhttpd c ++服务器。但是上面的jquery代码只是我做了一个简单的,如果现在我将它与microhttpd服务器集成,那会有用吗?我不知道 。我想知道microhttpd支持那种类型请求。
-
@RoryMcCrossan"因为它让你的机器非常脆弱"你能描述一下机器是如何易受攻击的吗?
-
@ guest271314因为这意味着我可以运行JS代码,可以访问本地机器上的任何文件。
-
@RoryMcCrossan"可以访问本地计算机上的任何文件。"当用户在file:协议上可以访问用户本地计算机上的任何文件时,如何在其他用户计算机上运行代码?
-
安全设置在Chrome浏览器本身/上更新! (全局设置)因此,如果用户正在尝试加载本地文件,那么无关紧要..如果他们去了webstie,其中有一些js代码..它可以访问本地文件系统中的文件。