我使用jQuery mobile创建了一个网站,该网站连接到我创建的用于获取数据的php Web服务。该网站在桌面浏览器和移动浏览器上都可以正常工作。 我已经为Android和iOS构建了项目,他们无法从互联网上检索任何数据。
对托管服务器的域所做的所有Ajax请求都失败了。 其中一个要求是:
var getSchedule = $.ajax({
type: "POST",
dataType: "json",
url: "https://www.lefkatis.com/nba/APIData.php",
data: {"action": "schedule"}
});
getSchedule.done(function (data) {
console.log('Schedule Loaded');
});
getSchedule.fail(function ( getSchedule, textStatus, errorThrown){
console.log(errorThrown);
});
使用相同代码的此项目的工作网站是here
请随时向我询问任何可能有用的其他信息,因为这是我的第一个stackoverflow帖子。
请记住,这是我的第一个cordova应用程序
答案 0 :(得分:2)
在Cordova 5及更新版本中,除非您在index.html中设置了适当的内容安全策略元标记,否则它们都将失败 - 否则Cordova将阻止所有Ajax请求。
您可以通过在head元素中向页面添加类似内容来实现此目的,以便允许访问任何服务器:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *">
或者你可以使用空格分隔列表将connect-src限制为你想要访问的服务器,如下所示:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src https://www.lefkatis.com">
有一篇详细的博客文章解释了这一点,以及iOS 9的其他注意事项here。当您的服务器运行SSL连接时,您应该只使用iOS 9的内容安全策略,并且不需要在项目中配置App Transport Security异常。