使用.getJSON获取Play商店应用程序详细信息时,出现Cross Origin Block Request 错误

所以基本上我使用42matters.com APP市场API来从谷歌Play商店得到的应用程序的细节或信息,一切工作正常,我得到的JSON响应回来,但是当我周末假期后回到办公室,这宁可奇怪的错误来了,没有被返回。

我已经使用$ .getJSON函数,如:

var packageID = 'com.whatsapp'; $.getJSON('https://42matters.com/api/1/apps/lookup.json?p='+packageID+'&access_token=accesstoken1234') .done(function(appDetails) { $('#logo').html(JSON.stringify(appDetails)); }); 

如前所述,这是返回的数据,我能够相应地改变一切,但现在没有理由给我这个错误

 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://42matters.com/api/1/apps/lookup.json?p=com.whatsapp&access_token=accesstoken1234. This can be fixed by moving the resource to the same domain or enabling CORS 

我使用PHP启用CORS,并没有发生任何事情,试图改变Apache的conf文件,以启用CORS那里,但服务将无法重新启动,所以我卡住了。

还有一件事,当我手动在浏览器中input上面的链接,它确实给出了预期的结果。 请帮我解决它

CORS在浏览器端被阻止,不允许AJAX从另一个域请求数据。 你应该联系42matters.com团队为你打开crossdomain.xml,像这样CORS jQuery AJAX请求或者有人可以发布一个良好的crossdomain.xml样本?

或者AJAX Cross-Domain的解决方法是JSONP: jQuery AJAX跨域,但API应该支持这种请求。

最后一点是不要使用AJAX从其他来源收集数据,如果它是移动平台,它应该有本地的HTTP请求对象来做这个

我知道这是旧技术,但我们中的一些人仍然需要处理这个问题。

如果您正在处理IIS6 Web服务器:

  • 打开Internet信息服务(IIS)管理器
  • 右键单击要启用CORS的站点,然后转到“属性”
  • 切换到HTTP标题选项卡
  • 在“自定义HTTP标头”部分中,单击“添加”
  • 输入Access-Control-Allow-Origin作为标题名称
  • 输入*作为标题值
  • 点击确定两次

IIS7 – 添加到你的web.config

 <?xml version="1.0" encoding="utf-8"?> <configuration> <system.webserver> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webserver> </configuration> 

我们可以通过在我们的html文件上放置基本标签来解决这个问题。

 <head> <base href="http://www.otherdomain.com/xyz/"> </head>