国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJs解決跨域問題案例詳解(簡單方法)

2019-11-20 10:00:13
字體:
來源:轉載
供稿:網友

首先我們做點準備說明,不然你明白我說的是啥意思別人不明白,就算別人明白了那總有人不明白,那你要說了,我的意思是這個說明必須要做了,答案是必須的,為了更好的方便大家理解嘛。

我們以兩個主域名或者一個主域名+一個二級域名為例,均可演示跨域問題。

客戶端 a.com

服務端 b.com或者s.a.com

angularJs版本 V1.2.25

準備工作做得很充分嘛,就差把我們的編輯器是subline暴露出來了,這個一般人我是不告訴他滴。

有人嚷嚷了,這問題老早就有了,你現在提出來有啥意義呢?難不成你還能把花忽悠開了?嗯,我還真能把花寫開了。看戲吧,我們本篇要上演的是完整版跨域實例。

接下來我們先看客戶端是如何請求數據的

注意哦,我們的代碼是寫在a.com域名下面的

<!DOCTYPE html><html lang="en" ng-app="app"><head><meta charset="UTF-8"><title></title><script src="./angular.min.js"></script><script type="text/javascript">var app = angular.module('app', []);app.controller('appCtrl', ['$scope', function ($scope) {$http({method: 'JSONP',url: 'http://www.b.com/test.php?callback=JSON_CALLBACK',}).success(function (msg) {console.log(data);});//或者$http.jsonp('http://www.b.com/test.php?callback=JSON_CALLBACK').success(function (msg){console.log(msg);}); }]);</script></head><body></body></html>

我們看到,這里是直接以jsonp的形式進行跨域請求的,其操作同jquery中對跨域的請求方式如出一轍。注意,我們的callback是固定的,即JSON_CALLBACK,盡量不要去做任何改動

我們再看服務端b.com中的test.php對請求數據的處理方式,這里以原生php的方式做參考

$callBack = isset($_GET['callback']) ? $_GET['callback'] : DEFAULT_CALLBACK;exit($callBack.'('.json_encode($data).')');

我們再回來看看客戶端console.log記錄的結果

到此,也就是說我們跨域請求是成功的!

最后我們做個小總結,注意下其中的重點:

1.客戶端跨域請求的url后追加的參數是?callback=JSON_CALLBACK,參數callback的值指定為JSON_CALLBACK,注意是大寫,就是JSON_CALLBACK不要作任何改動,感覺這里是個不小的坑,?callback的值稍作改動,客戶端就需要全局定義callback函數,而且還特么怎么再傳給$scope處理?為了避免不必要的麻煩,這里建議就這么搞吧

2.再看服務端,服務端需要指定$callBack = $_GET['callback'];接收callback,而且你還會發現接收的callback不是我們客戶端寫的?callback的值,客戶端指定JSON_CALLBACK應該是為了觸發angularJs內部的機制

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣武区| 津市市| 开阳县| 澄江县| 碌曲县| 京山县| 罗定市| 南木林县| 襄城县| 米易县| 桐梓县| 宜春市| 赣榆县| 信丰县| 开化县| 岱山县| 神农架林区| 阿坝| 肥城市| 巴林右旗| 鲁山县| 邯郸市| 山阴县| 都昌县| 从化市| 镇远县| 西林县| 罗城| 靖宇县| 通城县| 三门县| 新晃| 聂拉木县| 长宁县| 宣汉县| 称多县| 岱山县| 台中市| 额济纳旗| 逊克县| 肇州县|