【问题标题】:XMLHttpRequest: Origin null is not allowed by Access-Control-Allow-Origin [duplicate]XMLHttpRequest:Access-Control-Allow-Origin 不允许 Origin null [重复]
【发布时间】:2012-10-20 00:46:23
【问题描述】:

可能重复:
XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin
XMLHttpRequest cannot load file://… Origin null is not allowed by Access-Control-Allow-Origin

我正在尝试打开我的 JSON 文件,例如:

jQuery.getJSON('../data/json/en/nodesData.json',
      function(data){
           jQuery.each(data, function(){
                  //do something...
           })
     })

这会在 Chrome 中产生以下错误:

XMLHttpRequest 无法加载 file:///C:/URL/data/json/en/nodesData.json。 Access-Control-Allow-Origin 不允许 Origin null

有什么问题?如何检索我的 json?

【问题讨论】:

  • 这个脚本是在本地机器的页面上还是在网络上?
  • 我在本地机器上工作。我的应用程序基于 Jquery
  • 你能在你的本地机器上安装一个网络服务器吗?这将使这项工作发挥作用,并使您的生活更轻松。 apachefriends.org/en/xampp.html
  • 我的目标是利用一个变量从 JSON 文件中导入数据。我通过 AJAX 调用创建了一种导入方式,但 Chrome 存在问题
  • @Marcel:你在你的页面中,在你的代码之前准备它们。 (哦,还有文件系统 API)

标签: javascript jquery json google-chrome


【解决方案1】:

您确实应该运行像 Apache 或 IIS 这样的本地服务器来运行 HTML/JavaScript 代码,这样您就不会遇到这些限制。

您可以使用标志--allow-file-access-from-files 来启动浏览器,这会消除限制。

【讨论】:

    【解决方案2】:

    出于安全原因,您不能对本地文件系统进行 AJAX 调用。有些浏览器允许这样做,但有些则不允许。 Chrome 有一个启用此功能的标志,但默认情况下它是关闭的。

    【讨论】:

    【解决方案3】:

    看看Same Origin Policy

    您无法加载该文件,因为从技术上讲它位于另一个域中。你需要像localhost/<Path>/nodesData.json 这样称呼它。

    【讨论】:

    • 如何通过本地主机调用?我没有服务器,我的应用是基于Jquery的
    • 尝试this answer 让它在 chrome 中工作...
    • @Valeriane 您是否查看了我在上一条评论中提供的链接并试图使其正常运行?
    猜你喜欢
    • 2012-08-16
    • 2012-06-07
    相关资源
    最近更新 更多