方法:使用$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代码,会被浏览器加载,并在用户会话的上下文中执行。不怀好意的服务器会执行那些应避而远之
的脚本,这回造成不同程度的伤害,从单纯破坏页面到盗取敏感数据。