对本地文件系统的 AJAX 请求在 Chrome 中不起作用?

IT技术 javascript jquery ajax google-chrome
2021-01-24 12:13:51

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

跨源请求仅支持以下协议方案:http、data、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个回答

Firefox 允许请求,因为它接受对本地文件系统(即file://协议)的请求,如果它们也来自本地文件系统但是,Chrome 拒绝对file://url 的所有 XMLHttpRequest

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

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

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

@Deep 是的,但这不是一个好主意,因为它会使您的机器非常脆弱。
2021-03-22 12:13:51
如果 OP 愿意,我添加了一条关于它的注释,但这完全是一个警告
2021-04-04 12:13:51
Chrome 浏览器本身的安全设置已更新!(全局设置)所以如果用户尝试加载本地文件并不重要。
2021-04-05 12:13:51
可以做到,但必须先更改chrome的设置,这绝对不可取但可以做到
2021-04-12 12:13:51
完全同意你的看法。
2021-04-14 12:13:51