所以基本上我使用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>