天天看點

angularJs 解決跨域通路問題

 方法:使用$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代碼,會被浏覽器加載,并在使用者會話的上下文中執行。不懷好意的伺服器會執行那些應避而遠之 的腳本,這回造成不同程度的傷害,從單純破壞頁面到盜取敏感資料。