取消本地主机上的Javascript API跨域问题

取消本地主机上的Javascript API跨域问题,javascript,jquery,cross-domain,disqus,Javascript,Jquery,Cross Domain,Disqus,我正试图构建一个页面,显示我的一堆博客文章的链接,每个链接旁边都有一个小气泡,上面有该文章的评论数。我认为最简单的方法是使用Discus在他们的开发文档中提到的“面向公众的Javascript API” 如果我在浏览器中访问此链接,我会得到我要查找的JSON: 然而,当我尝试从jQuery加载它时,它给了我一个可怕的XMLHttpRequest无法加载的消息:访问控制不允许使用Origin Allow Origin 我已经尝试使用$.getJSON()和$(“#div”).load()来加载它

我正试图构建一个页面,显示我的一堆博客文章的链接,每个链接旁边都有一个小气泡,上面有该文章的评论数。我认为最简单的方法是使用Discus在他们的开发文档中提到的“面向公众的Javascript API”

如果我在浏览器中访问此链接,我会得到我要查找的JSON:

然而,当我尝试从jQuery加载它时,它给了我一个可怕的XMLHttpRequest无法加载的消息:访问控制不允许使用Origin Allow Origin

我已经尝试使用$.getJSON()和$(“#div”).load()来加载它


我已将localhost和127.0.0.1添加到Discus API中的“链接到我的公钥的域”设置中。

实际上,您只需使用脚本和数据驱动属性即可完成此操作,方法如下。您只需加载disqs count.js脚本,然后使用
data-
attributes


编辑:您可以将其配置为只显示整数(然后您可以根据需要设置样式)。

要使用客户端,您需要执行JSONP请求。事实上,这方面的标准是一个指定函数名的回调参数。Discus还需要将
.json
更改为
.jsonp
,使用
jQuery.getJSON
,然后您只需添加
&callback=?
,jQuery将从中获取它。

我认为您只需要在顶部添加此标题:

<?php header('Access-Control-Allow-Origin: http://disqus.com'); ?>

您不能在响应标题中添加“localhost”作为源条目。这是因为CORS的JavaScript安全规范

Access Control Allow Origin可以设置为*以允许任何网站通过XMLHTTPRequest/AJAX访问数据,但不能将其设置为“localhost”

克服这一问题的可能解决办法是: 在公共域/位置承载发出请求的页面,并在响应头中包含主机名访问控制允许源站

正如“@Matthew Flaschen”所提到的,您可以使用JSONP request和
&callback=?
来完成此任务

或者作为最后手段,通过在“src”属性中指定URL,将JSON结果与脚本一起加载到
标记中,并访问JSON数据
例如:在服务器端修改结果以包含
={JSONObject}
技术,当脚本加载时,可以通过该变量访问数据
有些人也有同样的问题


仍然无法理解为什么浏览器拒绝
访问控制允许源代码=localhost
,但它们支持
访问控制允许源代码=*
(意味着任何公共网站都可以访问数据,但………)这件事可能有阴谋(跟踪访问数据的网站)

我找不到你指的是“面向公众的Javascript API”。他们的网站上有一些东西,但没有一个听起来像那样。他们在第一句话中谈到了这一点:但他们没有进一步解释:(问题是你需要做一个JSONP请求。事实上,这方面的标准是回调参数。使用
jQuery.getJSON
,你只需添加
&callback=?
,jQuery就会从那里得到它。我仍然认为
count.js
对于这个特定场景更容易。如果你想添加它作为答案,我会接受。)它。此外,我必须确保请求是details.jsonp而不是details.json。虽然count.js很好,但不幸的是,我需要能够自定义我的count显示。我添加了另一个答案。不过,我认为您也可以配置discus,仅使用count.js显示原始数字,然后根据需要设置样式。这看起来很有希望ng Matthew,谢谢,我会尝试一下,让您知道它是如何工作的。这在单页应用程序中是不可能的。我总是有一个错误的请求,我不知道怎么做。我使用Mootools->request.JSONP({..})。send();作为url:?“您能帮我吗???