因為瀏覽器使用了同源策略,所以產生跨域請求。一個網頁向另一個不同網域名稱/不同協定/不同連接埠的網頁請求資源,這就是跨網域。本篇文章提供了5種方式來解決網站跨域,有興趣的朋友可以看看。
1、什麼是跨越?
- 一個網頁向另一個不同網域名稱/不同協定/不同連接埠的網頁要求資源,這就是跨網域。
- 跨域原因產生:在目前網域請求網站中,預設不允許透過ajax請求發送其他網域。
2、為什麼會產生跨域請求?
#3、什麼是同源策略?
- 同源策略是Netscape提出的一個著名的安全策略,現在所有支援JavaScript的瀏覽器都會使用這個策略。同源策略是瀏覽器最核心也最基本的安全功能,如果缺少同源策略,瀏覽器的正常功能可能會受到影響。可以說web是建構在同源策略的基礎上的,瀏覽器只是針對同源策略的一種實作。
4、為什麼瀏覽器要使用同源策略?
解決方案有五:
1、前端使用jsonp (不建議使用)
當我們正常地請求一個JSON資料的時候,服務端返回的是一串 JSON類型的數據,而我們使用 JSONP模式來請求資料的時候服務端回傳的是一段可執行的 JavaScript程式碼。因為jsonp 跨域的原理就是用的動態載入 script的src ,所以我們只能把參數透過 url的方式傳遞,所以jsonp的 type型別只能是get範例:
$.ajax({
url: 'http://192.168.1.114/yii/demos/test.php', //不同的域
type: 'GET', // jsonp模式只有GET 是合法的
data: {
'action': 'aaron'
},
dataType: 'jsonp', // 数据类型
jsonp: 'backfunc', // 指定回调函数名,与服务器端接收的一致,并回传回来
})
登入後複製
#使用JSONP 模式來請求資料的整個流程:客戶端發送一個請求,規定一個可執行的函數名稱(這裡就是 jQuery做了封裝的處理,自動幫你產生回呼函數並把資料取出來供success屬性方法來呼叫,而不是傳遞的一個回調句柄),伺服器端接受了這個 backfunc函數名,然後把資料透過實參的形式發送出去-
(在jquery 源碼中, jsonp的實作方式是動態新增
標籤來呼叫伺服器提供的 js腳本。jquery 會在window物件中載入一個全域的函數,當
程式碼插入時函數執行,執行完畢後就
作者最新文章
-
2019-05-31 18:00:19
-
2019-05-31 17:53:44
-
2019-05-31 17:41:15
-
2019-05-31 17:32:51
-
2019-05-31 17:24:18
-
2019-05-31 17:15:01
-
2019-05-31 16:58:16
-
2019-05-31 16:37:47
-
2019-05-31 16:19:45
-
2019-05-31 16:04:54