我已经加载了文档中所需的所有内容以启用互联网连接,但收到的所有和任何互联网请求都带有404
返回码。
我知道我想要覆盖的文件可跨域评估。见到这里:http://jsfiddle.net/hutber/VN864/
我在我的应用程序中运行相同的代码,并在警报中返回点击404
。
要测试我的连接,我正在运行:
var networkState = navigator.connection.type;
var states = {};
if(typeof Connection!=="undefined"){
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.CELL] = 'Cell generic connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
这将按预期返回连接。目前WiFi connection
config.xml中
<access origin="*" />
<feature name="NetworkStatus">
<param name="android-package" value="org.apache.cordova.NetworkManager" />
</feature>
AndriodManiest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
JS过去常常打电话给http请求
$.ajax({
url: 'http://stage.sexdiaries.co.uk/app/users/login',
type: 'post',
data: {
'uname': values.uname,
'pword': values.pword
},
crossDomain: true,
error: function(data){
c(data.status);
},
success: function(data){
c('success: '+data);
data = JSON.parse(data);
if(data.privateKey){
$.jStorage.set('uid',data.ud.uid); //store user ID in the localStorage to persist
sessionStorage.setItem('privateKey',data.privateKey); //store privateKey in session so it disapears when the user closers the tab
Backbone.history.loadUrl('');
}
}
});
所以我知道连接是活跃的。我真的有联系吗?我疯了吗?我该如何获得此http请求?
使用iFrame添加了信息
<iframe width="560" height="315" src="http://stage.sexdiaries.co.uk" frameborder="0" allowfullscreen></iframe>
这会出现以下错误:
所以要100%确保我可以访问互联网我已经添加了一个应该100%工作的iframe。
答案 0 :(得分:9)
我今晚也遇到了这个问题(请参阅我对原始问题的评论),但我很高兴地报告说我想出了这个问题。
事实证明,它与Cordova for Android 4.0.0中的更新有关。来自Changlelog:
- 白名单功能现在通过插件(CB-7747)提供 白名单已得到增强,更安全,可配置 现在,框架支持设置Content-Security-Policy (请参阅插件自述文件中的详细信息)您需要添加新的 cordova-plugin-whitelist插件遗留白名单行为仍然存在 可通过插件获得(虽然不推荐)。
所以解决这个问题的方法是安装插件:
ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git
之后您可以配置可以导航到哪个主机,出于测试目的,您可以将其设置为:
<allow-navigation href="*" />
这也解释了iframe测试的失败。我在我的项目中验证了这个修复程序,现在一切正常。
祝你好运答案 1 :(得分:0)
我认为您可能忘记允许访问您的服务器,您可以使用config.xml文件来允许访问所有网址以进行测试。