使用.getJSON获取Play Store应用程序详细信息时,获取跨来源块请求[CORS]错误


Getting Cross Origin Block Request [CORS] error when using .getJSON to get Play Store App Details

所以基本上我使用42matters.com应用程序市场API从google 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,但是服务无法重新启动,所以我被卡住了。

还有一件事,当我在浏览器中手动输入上述链接时,它确实给出了所需的结果。请帮我解决

CORS在浏览器端被阻止,不允许AJAX从另一个域请求数据。你应该联系42matters.com团队,为你打开crossdomain.xml。你喜欢这个CORS jQuery AJAX请求,或者有人能发布一个格式良好的crossdomainxml示例吗?

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

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

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

如果您使用的是IIS6网络服务器:

  • 打开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>