好的,这只是疯了。
我的一位朋友正在为我测试一个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(纯文本编辑应用程序)中,他的文件中的代码如下所示:
但是,如果我将该代码粘贴到新的TextWrangler文档中,则代码如下所示:
并得到这个:如果我使用与其他文件完全相同的代码保存该新文件,则脚本执行没有问题。这两个文件都是从同一个地方(我的本地机器)执行的。根据我可以检查的属性,两者都是纯HTML文件(我没有看到奇怪的样式信息)。至少可以说,这很奇怪。
编辑1 :这两个文件都在运行Safari,OSX的本地计算机上。虽然我知道StackOverflow不是100%犹太人,但这个问题很可能是文件特定的,所以我在这里发帖link to the files。 (但据我所知,他们都是带有.html扩展名和内容相同的香草文本文件......这就是为什么这会让人感到困惑)
答案 0 :(得分:1)
我怀疑虽然您在两种情况下都是从“本地计算机”加载文件,但在一种情况下,您只需双击文件资源管理器中的文件并获取file://
即可。 URL,在另一种情况下,您是通过http://
或https://
网址从本地运行的网络服务器进程打开文件来实现的。
这很重要,因为许多浏览器(例如Chrome)都不允许通过XMLHttpRequest
网址加载的网页中的所有file://
次来电,因为所有来源都是“交叉”原产地“并被同源政策否定。因此,如果您从file://
网址加载文件,则XHR会失败,但如果您通过http://
或https://
加载,则可能会有效。