AJAX请求本地文件系统无法在Chrome中运行?

时间:2016-07-13 06:57:01

标签: javascript jquery ajax google-chrome

我正在使用jQuery从XML动态创建UI。我的jQuery在Firefox中运行,但在Chrome中它不起作用。它给了我这个控制台错误:

  

交叉源请求仅支持协议方案:http,数据,chrome,chrome-extension,https,chrome-extension-resource。

以下是我的jQuery代码,它使用的是Firefox但不适用于Google Chrome:

$.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><a href="+ id +">"+ tab +"</li>");
        });
    }
});

1 个答案:

答案 0 :(得分:19)

Firefox允许该请求,因为它接受对本地文件系统的请求(即file://协议),如果它们也来自那里。但是Chrome会拒绝所有XMLHttpRequests到file://网址。

请注意,您无法在任一浏览器中从外部域向本地文件系统发出AJAX请求 - 如果可以的话,这将是大量安全漏洞。

要使此AJAX请求在Chrome中运行,您需要向网络服务器发出请求。如果您使用的是Windows,则可以在本地计算机上轻松安装IISWAMP

请注意,可以在Google Chrome中启用一项设置,允许从浏览器向本地文件系统发出请求,但使用它确实不是一个好主意。如果您决定继续执行此操作,可以找到指南here