前段時間給朋友分析了下經常使用的jsonp的跨域原理,跨域的方式有不少種,這裏簡單記錄一種jsonp,闡述一下分析思想,分析過程,找到解決問題的方式。java
1.JavaScript怎麼跨域jquery
2.爲何會出現跨域問題ajax
3.經常使用的跨域插件是什麼json
4.爲何<script src=""></script>不會產生跨域問題跨域
5.java後臺跨域的處理是什麼原理瀏覽器
跨域方式?dom
(1) document.domain+iframe的設置函數
(2) 利用iframe和location.hashjsonp
(3)動態建立scripturl
第三種也是咱們這裏主要分析的方式。
在咱們經常使用的跨域解決方案就是,使用jquery 的ajax請求,url帶上一個callback=? 這樣就完成了跨域請求。具體是怎麼實現的?
作過跨域請求的人,都知道callback會變成一個隨機函數名,在服務端返回數據的時候,會將數據以JavaScript函數調用的方式包裹,列如 jquery_33454523443543('我是數據參數')
ok到這裏咱們內心應該有點疑惑,這難道是要在客戶端執行?
爲何<script src=""></script>不會產生跨域問題
既然<script >標籤不會產生跨域問題,那麼咱們是否能夠在這上面作些文章?
分析到這裏咱們應該有所明悟,所謂的跨域就是使用JavaScript的標籤特性,進行二次封裝。獲得後臺的數據(生產的JavaScript函數)在瀏覽器執行,最終獲得的效果就表現成跨域。
jQuery的callback函數應該也懂了?
服務端爲什麼要使用匿名函數包裹數據?
分析就記錄到這裏.....