Angular中使用$http.jsonp發送跨站請求的實踐中,遇到了下面的一些問題:
1. 不是所有返回json格式的url都支持jsonp,服務器端需要支持從url中讀取返回函數並用它封裝json數據。
2. AngularJS v1.6.1中,url中不能包含callback這個參數,而是用jsonpCallbackParam來指定
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
3. 把url加入白名單,否則會遇到瀏覽器同源策略限制的錯誤。
angular.module('mthtran') .config(function($sceDelegateProvider) { $sceDelegateProvider.resourceUrlWhitelist([ // Allow same origin resource loads. 'self', // Allow loading from our assets domain. 'http://query.yahooapis.com/v1/public/**' ]); })
參考鏈接:
http://stackoverflow.com/questions/12066002/parsing-jsonp-http-jsonp-response-in-angular-js
https://docs.angularjs.org/api/ng/service/$http#jsonp