PhoneGap中文网

 找回密码
 立即注册
查看: 30911|回复: 9
打印 上一主题 下一主题

phonegap android端 使用ajax跨域不成功(附带代码)

[复制链接]

1

主题

4

帖子

17

积分

新手上路

Rank: 1

积分
17
跳转到指定楼层
楼主
发表于 2015-5-10 17:09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先是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="*" />

一起都是按网上的例子写的,但是在真机上跨域不成功,在本机浏览器中能够成功!为何?!
回复

使用道具 举报

493

主题

2035

帖子

6894

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6894
沙发
发表于 2015-5-10 18:11:08 | 只看该作者
可以看看我们论坛教程 第一季第十讲

不成功检查是不是没有网络
回复 支持 反对

使用道具 举报

1

主题

4

帖子

17

积分

新手上路

Rank: 1

积分
17
板凳
 楼主| 发表于 2015-5-10 18:49:34 | 只看该作者
肯定有网络,而且在局域网的
回复 支持 反对

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
地板
发表于 2015-7-9 12:42:30 | 只看该作者
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。

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);
                }
            });
回复 支持 反对

使用道具 举报

52

主题

528

帖子

1652

积分

金牌会员

Rank: 6Rank: 6

积分
1652
5#
发表于 2015-7-9 21:08:15 | 只看该作者
在做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'">
回复 支持 反对

使用道具 举报

52

主题

528

帖子

1652

积分

金牌会员

Rank: 6Rank: 6

积分
1652
6#
发表于 2015-7-9 21:08:43 | 只看该作者
newman 发表于 2015-7-9 12:42
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。

ajax error给的是

https://github.com/apache/cordova-plugin-whitelist


安装这个插件
cordova plugin add cordova-plugin-whitelist
回复 支持 反对

使用道具 举报

3

主题

6

帖子

37

积分

新手上路

Rank: 1

积分
37
7#
发表于 2015-7-15 13:32:08 | 只看该作者
跨域请求需要服务器支持的亲 叫后台人员把请求结果用callback()包起来 如callback(任意返回数据)  而其中callback字符 是你客户端的一个请求参数 如 www.baidu.com?id=heishou&callback=?  那么结果就应该是?(任意返回数据)    有比如www.baidu.com?id=heishou&callback=haha   那结果就等于haha(任意返回数据)  后台需要获取callback请求参数的值 然后再把返回数据包起来
回复 支持 反对

使用道具 举报

0

主题

4

帖子

14

积分

新手上路

Rank: 1

积分
14
8#
发表于 2015-8-12 18:11:34 | 只看该作者
newman 发表于 2015-7-9 12:42
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。

ajax error给的是

你好,我新学phonegap,遇到的问题和你一样,也是浏览器里都好使,放到phonegap里就跨域失败,请问这个怎么解决的?
回复 支持 反对

使用道具 举报

52

主题

528

帖子

1652

积分

金牌会员

Rank: 6Rank: 6

积分
1652
9#
发表于 2015-8-12 21:53:36 | 只看该作者
doom1981 发表于 2015-8-12 18:11
你好,我新学phonegap,遇到的问题和你一样,也是浏览器里都好使,放到phonegap里就跨域失败,请问这个怎 ...

这个事后端

http://bbs.phonegap100.com/thread-484-1-1.html
回复 支持 反对

使用道具 举报

0

主题

4

帖子

14

积分

新手上路

Rank: 1

积分
14
10#
发表于 2015-8-13 10:14:46 | 只看该作者
测试一把 发表于 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 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2024-4-20 16:01 , Processed in 0.048236 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表