AngularJs解决跨域问题案例详解(简单方法)

 更新时间:2016年05月19日 09:35:04   转载 作者:白狼  
本文通过一个案例给大家介绍angularJs解决跨域问题,非常具有参考借鉴价值,感兴趣的朋友一起学习吧

首先我们做点准备说明,不然你明白我说的是啥意思别人不明白,就算别人明白了那总有人不明白,那你要说了,我的意思是这个说明必须要做了,答案是必须的,为了更好的方便大家理解嘛。

我们以两个主域名或者一个主域名+一个二级域名为例,均可演示跨域问题。

客户端 a.com

服务端 b.com或者s.a.com

angularJs版本 V1.2.25

准备工作做得很充分嘛,就差把我们的编辑器是subline暴露出来了,这个一般人我是不告诉他滴。

有人嚷嚷了,这问题老早就有了,你现在提出来有啥意义呢?难不成你还能把花忽悠开了?嗯,我还真能把花写开了。看戏吧,我们本篇要上演的是完整版跨域实例。

接下来我们先看客户端是如何请求数据的

注意哦,我们的代码是写在a.com域名下面的

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title></title>
<script src="./angular.min.js"></script>
<script type="text/javascript">
var app = angular.module('app', []);
app.controller('appCtrl', ['$scope', function ($scope) {
$http({
method: 'JSONP',
url: 'http://www.b.com/test.php?callback=JSON_CALLBACK',
}).success(function (msg) {
console.log(data);
});
//或者
$http
.jsonp('http://www.b.com/test.php?callback=JSON_CALLBACK')
.success(function (msg){
console.log(msg);
}); 
}]);
</script>
</head>
<body>
</body>
</html>

我们看到,这里是直接以jsonp的形式进行跨域请求的,其操作同jquery中对跨域的请求方式如出一辙。注意,我们的callback是固定的,即JSON_CALLBACK,尽量不要去做任何改动

我们再看服务端b.com中的test.php对请求数据的处理方式,这里以原生php的方式做参考

$callBack = isset($_GET['callback']) ? $_GET['callback'] : DEFAULT_CALLBACK;
exit($callBack.'('.json_encode($data).')');

我们再回来看看客户端console.log记录的结果

到此,也就是说我们跨域请求是成功的!

最后我们做个小总结,注意下其中的重点:

1.客户端跨域请求的url后追加的参数是?callback=JSON_CALLBACK,参数callback的值指定为JSON_CALLBACK,注意是大写,就是JSON_CALLBACK不要作任何改动,感觉这里是个不小的坑,?callback的值稍作改动,客户端就需要全局定义callback函数,而且还特么怎么再传给$scope处理?为了避免不必要的麻烦,这里建议就这么搞吧

2.再看服务端,服务端需要指定$callBack = $_GET['callback'];接收callback,而且你还会发现接收的callback不是我们客户端写的?callback的值,客户端指定JSON_CALLBACK应该是为了触发angularJs内部的机制

相关文章

  • AngularJS之依赖注入模拟实现

    AngularJS之依赖注入模拟实现

    这篇文章主要为大家详细介绍了AngularJS依赖注入模拟实现,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Angular设置title信息解决SEO方面存在问题

    Angular设置title信息解决SEO方面存在问题

    爬虫在检索seo信息的时候会读不了js给其赋的值,导致搜索引擎收录不了或者收录了无效的信息,下面本文给大家介绍Angular设置title信息解决SEO方面存在问题,需要的朋友可以参考下
    2016-08-08
  • AngularJS中一般函数参数传递用法分析

    AngularJS中一般函数参数传递用法分析

    这篇文章主要介绍了AngularJS中一般函数参数传递用法,结合实例形式分析了模型参数与普通参数的具体功能与使用技巧,需要的朋友可以参考下
    2016-11-11
  • AngularJS入门教程之过滤器详解

    AngularJS入门教程之过滤器详解

    本文主要讲解AngularJS 过滤器,这里整理了过滤器的相关资料并附示例代码,帮助大家学习AngularJS的知识,有需要的小伙伴可以参考下
    2016-08-08
  • Angular2中Bootstrap界面库ng-bootstrap详解

    Angular2中Bootstrap界面库ng-bootstrap详解

    不知道大家有没有留意,最近angular-ui团队终于正式发布了基于 Angular2的Bootstrap界面库ng-bootstrap ,之前工作中一直在用 AngularJS 1.x 的UI Bootstrap , 因此对这个ng-bootstrap 也是很感兴趣,所以第一时间进行试用。这篇文章就给大家详细介绍下ng-bootstrap。
    2016-10-10
  • Angular2里获取(input file)上传文件的内容的方法

    Angular2里获取(input file)上传文件的内容的方法

    这篇文章主要介绍了Angular2里获取(input file)上传文件的内容的方法,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • Angular2内置指令NgFor和NgIf详解

    Angular2内置指令NgFor和NgIf详解

    Directive的概念在Angular 1.x就存在了,我对它的认识比较模糊,所以直接通过一些例子来说明。Angular提供的内置执行有很多,这次使用两个:ngFor、ngIf。
    2016-08-08
  • Angular2的管道Pipe的使用方法

    Angular2的管道Pipe的使用方法

    本篇文章主要介绍了Angular 2的管道Pipe的使用方法,详细的介绍了管道的定义和使用方法,具有一定的参考价值,有兴趣的可以了解一下
    2017-11-11
  • 浅谈Angular中ngModel的$render

    浅谈Angular中ngModel的$render

    下面小编就为大家带来一篇浅谈Angular中ngModel的$render。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • AngularJS表单验证功能分析

    AngularJS表单验证功能分析

    这篇文章主要介绍了AngularJS表单验证功能,结合具体实例形式分析了AngularJS表单验证的操作步骤、实现技巧与相关注意事项,需要的朋友可以参考下
    2017-05-05

最新评论