【发布时间】:2015-10-31 00:58:55
【问题描述】:
好吧,这太疯狂了。
我的一个朋友正在为我测试一个 JavaScript/jQuery 库存小部件。他用来测试的 HTML 文件的内容再简单不过了。就是这两行:
<script src="http://quandl.io/widgets/js/q.js"></script>
<div name="quandl" data-values="msft revenue"></div>
对他来说,这会引发错误“[Error] XMLHttpRequest cannot load http://quandl.io/widgets/data/us-fundamentals.php?ticker=MSFT&indicator=REVENUE. Origin null is not allowed by Access-Control-Allow-Origin。”
他给我发了他的文件,我得到了同样的错误。然而,奇怪的是在 TextWrangler(一个纯文本编辑应用程序)中,他的文件中的代码如下所示:
但是,如果我将该代码粘贴到新的 TextWrangler 文档中,则代码如下所示:
并且得到这个:如果我用与另一个文件完全相同的代码保存新文件,则脚本执行没有问题。这两个文件都是从同一个地方(我的本地机器)执行的。根据我可以检查的属性,两者都是纯 HTML 文件(我看不到奇怪的样式信息)。至少可以这么说,这很奇怪。
编辑 1:这两个文件都在我运行 Safari、OSX 的本地计算机上。虽然我知道这对于 StackOverflow 来说不是 100% 洁净,但这个问题很可能是特定于文件的,所以我在这里发布了 link to the files。 (但据我所知,它们都是带有 .html 扩展名和相同内容的普通文本文件......这就是为什么这如此令人困惑)
【问题讨论】:
-
你在这两种情况下都使用同一个浏览器吗?一些浏览器允许来自
file://URL 的 XHR,而其他浏览器(如 Chrome)则不允许。 -
@T.J.Crowder:是的。一切都一样。
-
当脚本尝试从通过
file://URL 而不是通过Web 服务器和http://URL 加载的页面执行ajax 调用时,通常会发生特定的Ajax 错误。跨度> -
好吧,我相信您已经意识到,您所描述的是……极不可能。所以某处是有区别的。什么浏览器?你能创建一个MCVE吗?
-
@jfriend00:他说他在做什么。问题是为什么结果会不一致。它应该始终有效(某些浏览器)或始终失败(Chrome 等)。
标签: jquery xmlhttprequest