【问题标题】:Local xml blocked by cors policy本地 xml 被 cors 策略阻止
【发布时间】:2019-03-21 13:13:51
【问题描述】:

我正在尝试使用 JQuery 读取 XML 文件...或者至少,我正在尝试访问它。我有一个这样的文件系统:

-> Main directory
    -> html
        -> home.html
    -> js
        -> jquery.js
        -> XMLReader.js (made it myself)
    -> XML
        -> test.xml

XMLReader.js 是这样制作的:

'use strict'
$(document).ready(function()
{
    $.ajax( 
    {
        type: "GET",
        url: "../xml/test.xml",
        //async: false,
        dataType: "xml",
        success: function(xml)
        {
            console.log("ayy");
        }
    });
});

当我尝试访问位于我的 xml 文件夹中的 XML 文件时,我的请求一直被 CORS 策略阻止(当我尝试访问本地文件时!)。另一方面,如果我将所有文件放在同一个目录中(当然还要更改链接),它就可以工作。

基本上,CORS 政策阻止我组织本地 Web 应用程序。

有没有办法解决这个问题? CORS 政策不应该阻止我尝试读取本地文件,对吧?

【问题讨论】:

  • 浏览器在 devtools 控制台中记录的确切错误消息是什么?
  • @sideshowbarker "跨域请求被阻止:同源策略不允许读取位于 file:///home/alexandre/Bureau/xml/testLayout.xml 的远程资源。(原因:CORS 请求不http)。”

标签: javascript jquery html xml cors


【解决方案1】:

不同的浏览器以不同的方式对从文件系统加载的文件实施同源策略限制。

一些:

  • 阻止对所有本地文件的访问
  • 阻止对除同一目录或 HTML 文件的子目录中的所有本地文件的访问

CORS 政策不应阻止我尝试读取本地文件。

是的,应该。这是一项重要的安全功能。

您不希望有人将 HTML 文件作为电子邮件的附件发送给您,双击它打开它,然后嵌入其中的 JavaScript 从您的硬盘读取文件并将它们发送给发送电子邮件的人.

有没有办法解决这个问题?

如果你想访问本地文件,那么:

  • 通过 HTTP 使您的本地文件可用。如果您不想允许来自其他计算机的访问,则可以运行仅侦听环回网络接口的 HTTP 服务器。
  • 使用实现了我描述的两个安全策略中较弱的一个浏览器,并按照您已经发现的那样重新排列您的文件系统

【讨论】:

  • 我可以用什么来轻松创建本地服务器而无需安装太多东西?
  • 好吧其实没关系:我的公司不希望我不得不求助于服务器。这是一个本地应用程序,应该使用 Firefox 浏览器作为解释器,因此无需使用互联网。也许还有其他解决方案?
  • 不,没有。只有我已经列出的两个。 (嗯,用其他东西代替 Firefox,比如自定义应用程序)。
  • 那太糟糕了。不过感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 2020-09-11
  • 2021-04-16
  • 2018-02-26
  • 2019-11-19
  • 2020-09-12
  • 2019-11-17
  • 2022-01-14
  • 2021-01-07
相关资源
最近更新 更多