XMLHttpRequest无法加载文件:// ... Access-Control-Allow-Origin不允许Origin null [关闭]

Posted

技术标签:

【中文标题】XMLHttpRequest无法加载文件:// ... Access-Control-Allow-Origin不允许Origin null [关闭]【英文标题】:XMLHttpRequest cannot load file://... Origin null is not allowed by Access-Control-Allow-Origin [closed] 【发布时间】: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") 这件事可能吗 所以如果我使用网络服务器提供上述文件,它不会给出任何错误? 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

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

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

【讨论】:

以上是关于XMLHttpRequest无法加载文件:// ... Access-Control-Allow-Origin不允许Origin null [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 WKWebView 通过 XMLHttpRequest 加载音频文件

XMLHttpRequest无法加载文件:// ... Access-Control-Allow-Origin不允许Origin null [关闭]

XMLHttpRequest 无法加载 https://[website].com 不支持跨域请求

XMLHttpRequest 无法加载。?

XMLHttpRequest 无法以角度加载

XMLHttpRequest 无法加载 - Meteor 和 FSCollection 没有“Access-Control-Allow-Origin”