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

來源:互聯網
上載者:User

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

我們以兩個主網域名稱或者一個主網域名稱+一個次層網域為例,均可示範跨域問題。

用戶端 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內部的機制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.