【问题标题】:XMLHttpRequest cannot load file://... Origin null is not allowed by Access-Control-Allow-Origin [closed]XMLHttpRequest无法加载文件:// ... Access-Control-Allow-Origin不允许Origin null [关闭]
【发布时间】:2011-09-22 17:00:47
【问题描述】:

我看到之前有人问过上面的问题,但是即使在参考了他们之后,我也无法为我找到一个方法,因此我冒昧地为这个问题开始了一个新的帖子。

我有一个包含以下代码的 getjson.html 文件

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $.getJSON("json_data.txt",function(result){
      $.each(result, function(i, field){
        $("div").append(field + " ");
      });
    });
  });
});
</script>
</head>
<body>

<button>Get JSON data</button>
<div></div>

</body>
</html>

json_data.txt 包含以下内容,

{ 
  "firstName": "John",
  "lastName": "Doe",
  "age": 25
}

当我在浏览器中打开 getjson.html 文件时,报错:

“XMLHttpRequest 无法加载文件://..... Access-Control-Allow-Origin 不允许 Origin null。”

有人请就这个问题提出一个简单的解决方案,我如何才能让这件事成为可能。

P.S:我正在编写一个网络应用程序。

【问题讨论】:

  • 是的,我在 Web 服务器上运行一切。如果我只是做 serveFile("somefile.hmtl") 这件事可能吗
  • 所以如果我使用网络服务器提供上述文件,它不会给出任何错误?

标签: javascript


【解决方案1】:

您是直接打开 HTML 文件吗?该文件需要放置在 Web 服务器上然后执行。通常,出于安全原因,浏览器不允许使用 file:/// 协议进行 AJAX 调用。

【讨论】:

    【解决方案2】:

    我读到你的问题有点晚了(2013 年春季),并认为我找到了解决文件:// 上下文中 CORS XHR 跨域限制的解决方案!

    我已将此标头放在我的远程 php 脚本中:

    header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
    

    它似乎工作!更多解释在这里:Rannpháirtí anaithnid/CORS

    它可能适用于“电话间隙”应用程序,而不是使用 jquery 和 jsonp?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-25
      • 2013-01-24
      • 2011-10-28
      • 2013-04-12
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      相关资源
      最近更新 更多