0

我是 javascript 的新手。我正在尝试从位于硬盘中的应用程序文件夹中读取一个 xml 文件。“仅 HTTP 支持跨源请求。” 这是被抛出的错误。

如果我尝试通过本地服务器/Web 服务器访问相同的 xml 文件,它工作正常。因为我正在尝试开发离线应用程序。我如何使它在本地工作。

谢谢,

4

2 回答 2

1

我可以想象您想要开发离线应用程序的几个原因:

如果您想要一个也可以离线工作的实际在线应用程序(考虑或不考虑同步内容),请查看 HTML5:http ://diveintohtml5.info/offline.html

现在,如果您认为“我没有服务器端逻辑,所以我不需要服务器,但我仍然在挖掘带有一些 html UI 的 javascript 应用程序”,很明显,我们几乎所有人都想到了看到令人惊叹的 UI 功能在最近的网络导航器中引入智能 API,所有这些都在本地运行并且绝对可移植。“好吧,所以我只需要一堆 javascript 文件,一些 html 和 css,我将任何 xml/json/csv 数据提供给它,这些数据位于我的企业网络的某个地方,在这里我无需在其中写下一些糟糕的 VBA一个巨大的 Excel 表格,或者通过 Web 服务器和防火墙等影响我的 IT/IS,我可以部署强大的数据查看器和指标等。”

我的意思是我确实对我说过这些话。而且我确实多次鄙视导航器的行为很好,直到我想获取数据然后抱怨只是为了获取那些该死的数据!

但我必须承认,网络导航器首先必须是可信任的,为此,必须承诺只浏览一致的网络应用程序(通过安全数据上的安全行为实现的安全逻辑),这意味着在某个地方设置一个有边界的沙箱。让应用程序只是“我的电脑上的任何东西”,同时连接到在导航器中运行的 www 太开放而不可靠。

如果您想拥有导航器的 html/css/javascript 功能,只需使用 Web 导航器引擎(例如 webkit)。重要的是,最终它将成为您自己的应用程序,您将能够做任何您想做的事情想要这样做,代价是不得不解释你的 IS/IT 团队是无害的,因为你必须这样做。

或者,如果您努力认识到数据提供者已经是服务器责任,请转到客户端服务器,手头有很多替代方案:

  • 您可以使用通常的 Apache(一些调试一体化软件包,例如 wamp 可以在几分钟内正常工作)
  • 您可以转移到全栈 Web 服务器 API(例如 Play!)来运行后台并在其上使用您喜欢的导航器(允许您在某个时候访问 Web),
  • 或使用 nodejs 和 webkit 之类的组合,或者使用多合一(例如https://github.com/rogerwang/node-webkit

与您的实际需求相比,我可能走得太远了:让该死的代码工作。为此,有很多关于本地文件“跨源请求仅支持 HTTP”的堆栈溢出问题的回答。

但这一次,我必须表明我的观点。希望它不会完全偏离轨道;)

于 2013-10-25T08:14:23.693 回答
0

这可能是由于您尝试访问的文件不在您的应用程序的沙盒环境中。

您要解析的文件应该位于您的应用程序可以访问的位置。Desktop 的用户配置文件/临时位置(文档/应用程序数据)就是这样的位置。您无法访问用户机器的整个文件结构。

http://blogs.adobe.com/asset/tag/sandbox

https://developer.apple.com/library/mac/documentation/security/conceptual/AppSandboxDesignGuide/DesigningYourSandbox/DesigningYourSandbox.html

于 2013-10-25T08:15:47.033 回答