" XMLHttpRequest无法加载"尽管文件明显相同

时间:2015-10-30 16:29:16

标签: jquery xmlhttprequest

好的,这只是疯了。

我的一位朋友正在为我测试一个JavaScript / jQuery库存小部件。他用来测试它的HTML文件的内容不会简单得多。这两行:

<script src="http://quandl.io/widgets/js/q.js"></script>
<div name="quandl" data-values="msft revenue"></div>

对他而言,这会抛出错误&#34; [错误] XMLHttpRequest无法加载http://quandl.io/widgets/data/us-fundamentals.php?ticker=MSFT&indicator=REVENUE。 Access-Control-Allow-Origin不允许使用null。&#34;

他把他的档案发给我了,我也得到了同样的错误。然而,奇怪的是在TextWrangler(纯文本编辑应用程序)中,他的文件中的代码如下所示:

enter image description here

但是,如果我将该代码粘贴到新的TextWrangler文档中,则代码如下所示:

enter image description here

并得到这个:如果我使用与其他文件完全相同的代码保存该新文件,则脚本执行没有问题。这两个文件都是从同一个地方(我的本地机器)执行的。根据我可以检查的属性,两者都是纯HTML文件(我没有看到奇怪的样式信息)。至少可以说,这很奇怪。

编辑1 :这两个文件都在运行Safari,OSX的本地计算机上。虽然我知道StackOverflow不是100%犹太人,但这个问题很可能是文件特定的,所以我在这里发帖link to the files。 (但据我所知,他们都是带有.html扩展名和内容相同的香草文本文件......这就是为什么这会让人感到困惑)

1 个答案:

答案 0 :(得分:1)

我怀疑虽然您在两种情况下都是从“本地计算机”加载文件,但在一种情况下,您只需双击文件资源管理器中的文件并获取file://即可。 URL,在另一种情况下,您是通过http://https://网址从本地运行的网络服务器进程打开文件来实现的。

这很重要,因为许多浏览器(例如Chrome)都不允许通过XMLHttpRequest网址加载的网页中的所有file://次来电,因为所有来源都是“交叉”原产地“并被同源政策否定。因此,如果您从file://网址加载文件,则XHR会失败,但如果您通过http://https://加载,则可能会有效。