angularJs 解决跨域访问问题

来源:互联网 发布:淘宝咖啡猫游戏代购 编辑:程序博客网 时间:2024/06/01 22:19

 方法:使用$http.jsonp()方式


注意:  请求值必须加上:callback=JSON_CALLBACK

例:
$http.jsonp('http://api.map.baidu.com/geodata/v3/geotable/list?callback=JSON_CALLBACK').success(function(data){
            console.log(data);
   });

一旦调用了$http.jsonp方法,AngularJs会动态创建新的<script>DOM元素,代码如下:
 <script type="text/javascript" src="http://api.map.baidu.com/geodata/v3/geotable/list?callback=angular.callbacks._k"></script>

返回数据会遵循如下模式:
angular.callbacks._k( 实际返回json数据 )

限制和危害:
1.只能用Jsonp技术提交GET HTTP请求;其次,错误处理也很麻烦,因为浏览器不会通过<script>标签暴露HTTP响应状态。实践中,意味着难以报告HTTP状态错误,并调用错误回调

2.JSONP会给web应用带来一些潜在的安全问题。除了XSS攻击,最大问题可能是服务器在JSONP响应中能够生成起决定作用的JavaScript代码,会被浏览器加载,并在用户会话的上下文中执行。不怀好意的服务器会执行那些应避而远之的脚本,这回造成不同程度的伤害,从单纯破坏页面到盗取敏感数据。
0 0
原创粉丝点击