【问题标题】:AJAX request to local file system not working in Chrome? [duplicate]对本地文件系统的 AJAX 请求在 Chrome 中不起作用? [复制]
【发布时间】:2016-11-15 14:58:49
【问题描述】:

我正在努力使用 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>");
        });
    }
});

【问题讨论】:

  • 你为什么首先使用file:///!?设置本地服务器。
  • url 应该是 http url 而不是文件路径

标签: javascript jquery ajax google-chrome


【解决方案1】:

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

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

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

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

【讨论】:

  • 可以,但是要先改变chrome的设置,绝对不可取,但可以做到
  • @Deep 是的,但这不是一个好主意,因为它会让你的机器非常脆弱。
  • 完全同意你的观点。
  • 如果 OP 愿意,我添加了一个注释,但它完全是警告购买者
  • 安全设置是在 Chrome 浏览器本身上更新的! (全局设置)所以不管用户是否尝试加载本地文件..如果他们去一个网站,里面有一些 js 代码..它可以访问本地文件系统中的文件。
猜你喜欢
  • 2011-07-25
  • 1970-01-01
  • 2018-10-05
  • 2019-04-04
  • 2015-12-06
相关资源
最近更新 更多