開發中遇到ajax跨域問題怎麼辦?(同源策略問題)自己的見解

作爲一個剛出道的小白,懂的並不是很多,也許這個問題已經在百度上有很多的解決方案,今天就把自己的理解寫上去

正所謂開局一張圖,其他全靠編。

錯誤來源

啊哈   正如你所看到的,我們在http://localhost:9091的時候,需要去調用http://localhost:9092的東西,然後報錯了

問題產生的原因:

當我們在使用Ajax的時候,通過Ajax技術去訪問跨域的接口的時候,會出現一個同源問題(協議,IP,以及端口)

 

爲啥呢?小編經後面瞭解到在使用Ajax在訪問跨域資源的時候,會出現 「同源策略」 的問題, 所謂同源策略是指:協議、域名、端口一致, 很顯然, 上述的情況就是端口不一樣所造成的

同源策略打比方解釋

經查看JQueryAPI資料,發現

Ajax裏面有個type=「JSONP」,一直沒有太仔細的看JQuery的api,這回仔細的瞅瞅

看完以上的API作何感想呢?是不是還是處於蒙圈的狀態,其實兜兜轉轉簡單一點好。就是在使用Ajax訪問的時候,加上dataType:‘jsonp’ , jsonpCallback作爲回調函數名,可以接收你返回的數據。

解決辦法我具體提供了以下兩種方案

問題的解決

1.用自己的手段來解決(最老的方式--不知道會不會出問題)

(1)採用他中間的一個漏洞,那就是src, 後面的callback作爲回調參數調用

客戶端:<script src="這個訪問的路徑是沒有限制的?callback=deal">

服務端(接收傳輸過來的callback,然後將其返回到前端去,當然返回到前端的是一個方法return callback+"(data爲json格式 的)")

2.使用ajax本身來解決

2.1.表面上看來我們採用的ajax方式,實際上我們改變了客戶端和服務端交互的本質(加上dataType:jsonp格式)

2.2因爲以前Ajax的本質是XMLHttpRequest

2.3加上之後的本質變成了<script>的方式

JsonCallback: 'call'--->回調函數,接收數據,傳輸到前端的方法接收。

 

 

 

最後加一句,這個只是個人的見解,有不同見解的歡迎在下面留言評論

最後的最後雙手附上JQuery1.8的API

鏈接: https://pan.baidu.com/s/1XnoDzRomLUo7f0ES4Bbu5w 提取碼: f9dg 複製這段內容後打開百度網盤手機App,操作更方便哦