angularjs 学习笔记(一) -----JSONP跨站访问

1、  下载angular-seed-master-master包,解压缩后将新版本的angularJS文件放入其中。

 

2、  制作frontmockup文件夹(前端调用),同时制作backmockup文件夹(后端调用),使用IIS开启2个webserver(此步骤可以用其他方式替代)。

 

3、  backmockup站点添加以下HTTP头

Access-Control-Allow-Credentials:true

Access-Control-Allow-Headers:origin,x-requested-with,content-type

Access-Control-Allow-Methods: POST,GET,OPTIONS

Access-Control-Allow-Origin:*

(此处用来开启跨域访问,IIS中在HTTP响应头中添加)

 

4、  AngularJs 跨域访问使用$resource的JSONP技术,代码如下

.service(‘JsonSource‘, [‘$resource‘,function($resource) {

return $resource(‘http://127.0.0.1:801/index.asp‘, {}, {init:{method:‘JSONP‘,format: ‘json‘, params:{callback:‘JSON_CALLBACK‘},isArray:true}});

}])

其中init方法为自定义,因为需要用到method:‘JSONP‘,所以不能使用get、query等自带方法,数组直接用isArray设置。

params:{callback:‘JSON_CALLBACK‘}是关键点,JSON_CALLBACK为系统方法,会生成一个自增长ID,用以与客户端匹配,客户端用<%=request("callback")%>方式获得,并输出

angular.callbacks._0(

[{"name":"angular.callbacks._0","journal_id":"539016f202b418c1e6000019"}])

这个方法的原始形态是callback:‘JSON_CALLBACK‘,并不使用params,由于无法使用request获得参数,不知道服务器端怎么配置,理论上这个选项的安全性更高。

 

5、  数据读取调用JsonSource的init方法

function ($scope,JsonSource ) {

         JsonSource.init(function(result){

                $scope.journals = result;

            });

}

         通过ng-repeat="journal in journals" 循环输出

 

6、  跨站访问功能完成,整理成压缩文件angularjs-0.0-20140610-jsonp.zip。

angularjs 学习笔记(一) -----JSONP跨站访问,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。