phonegap android端 使用ajax跨域不成功(附带代码)
首先是android上的代码:<script>
$(document ).bind( "mobileinit", function() {
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
</script>
<script type="text/javascript" charset="utf-8">
function aa()
{
$.ajax({
type : "GET",
url : "http://192.168.3.103:80/aaa.php?AjaxType=GetTask&UserID=Adminsys&jsoncallback=?",
dataType : "jsonp",
jsonp: 'jsoncallback',
success : function(Json)
{
alert(Json.VoteID);
alert(Json.VoteName);
return true;
}
});
}
服务器代码:
<?php
header("Access-Control-Allow-Origin: *");
$items_list=array(
'result'=>'aaa',
'page'=>1,
'totalPage'=>1
);
$items_list=json_encode($items_list);
$callback=$_GET['callback'];
echo $callback."($items_list)";
exit;
?>
android的AndroidManifest.xml文件中配置了:
<uses-permission android:name="android.permission.INTERNET" />
config.xml文件设置:
<access origin="*" />
一起都是按网上的例子写的,但是在真机上跨域不成功,在本机浏览器中能够成功!为何?! 可以看看我们论坛教程 第一季第十讲
不成功检查是不是没有网络
肯定有网络,而且在局域网的 我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。
ajax error给的是
SecurityError:Failed toe execute 'open' on 'XMLHttpRequest':Refused to connect to 'http://len/data' because i violates the document's COntent Security Policy.
Cordova5
AndroidManifest.xml加了
<uses-permission android:name="android.permission.INTERNET" />
config.xml
<access origin="*"/>
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
$.ajax({
type: "POST",
crossDomain: true,
dataType: "json",
url: "http://len/data",
cache: false,
async: false,
data:{},
success: function(html){
alert("success ! " + html);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert(XMLHttpRequest);
alert(textStatus);
alert(errorThrown);
}
}); 在做webapp时有朋友会发现Cordova 5.0 无法访问外网,404错误了,下文我们一起来看看问题的解决方案。
问题:
最近更换了笔记本,重新配置了开发环境,cordova升了最新的5.0,发现build出来的应用不支持访问外网接口。IOS一切正常,Android访问外网的接口全部报404错误。
解决办法:
方法一:添加白名单插件 cordova-plugin-whitelist ,方便快捷,
cordova plugin add cordova-plugin-whitelist
方法二:添加安全设置
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://*.MYDOMAIN.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> newman 发表于 2015-7-9 12:42
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。
ajax error给的是
https://github.com/apache/cordova-plugin-whitelist
安装这个插件
cordova plugin add cordova-plugin-whitelist
跨域请求需要服务器支持的亲 叫后台人员把请求结果用callback()包起来 如callback(任意返回数据)而其中callback字符 是你客户端的一个请求参数 如 www.baidu.com?id=heishou&callback=?那么结果就应该是?(任意返回数据) 有比如www.baidu.com?id=heishou&callback=haha 那结果就等于haha(任意返回数据)后台需要获取callback请求参数的值 然后再把返回数据包起来 newman 发表于 2015-7-9 12:42
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。
ajax error给的是
你好,我新学phonegap,遇到的问题和你一样,也是浏览器里都好使,放到phonegap里就跨域失败,请问这个怎么解决的? doom1981 发表于 2015-8-12 18:11
你好,我新学phonegap,遇到的问题和你一样,也是浏览器里都好使,放到phonegap里就跨域失败,请问这个怎 ...
这个事后端
http://bbs.phonegap100.com/thread-484-1-1.html 测试一把 发表于 2015-8-12 21:53
这个事后端
http://bbs.phonegap100.com/thread-484-1-1.html
谢谢,不过我用的不是jsonp,用的html5 cors,支持post,我在非phonegap环境下,也就是普通网站环境下,在win7下用chrome,file:///d:/test.html 访问 a.com 的跨域请求是成功的,同样代码放入phonegap后,访问a.com 就是403,请问这个是什么原因
页:
[1]