如何實現(xiàn)跨域

如何實現(xiàn)跨域

跨域應(yīng)該是我們經(jīng)常會遇到的問題,解決跨域也應(yīng)當(dāng)是前端人員必備的技能;如當(dāng)下很多網(wǎng)站都開始轉(zhuǎn)向https,那么很容易就會出現(xiàn)http和https之間跨域的問題;下面就來闡述一下實現(xiàn)跨域的幾種方法:

JSONP

JSONP實現(xiàn)跨域的方法應(yīng)該是我們最常用的方法,它主要是利用<script>標(biāo)簽沒有跨域的限制去實現(xiàn)跨域;因為通過<script>標(biāo)簽可以去引用任何網(wǎng)站的腳本資源,沒有任何的限制,所以就有人利用這個特性搞了一些事情,通過src引入的腳本資源通過后端配合處理,會返回一個回調(diào)函數(shù),這個回調(diào)函數(shù)里面是json格式的數(shù)據(jù),只需要執(zhí)行這個回調(diào)函數(shù)即可,那么在這之前本地腳本里已經(jīng)創(chuàng)建了相應(yīng)的回調(diào)函數(shù),只要等這個<script>標(biāo)簽加載完畢就會立即執(zhí)行,這時就會得到不同源的數(shù)據(jù);

CORS

CORS方法實現(xiàn)跨域這一方法是最簡單的,前端也就是和正常ajax請求數(shù)據(jù)完全一樣,只需要后端做相應(yīng)的處理就可以了;后端會在響應(yīng)頭里加上Access-Control-Allow-Origin允許哪些網(wǎng)站進(jìn)行跨域,如果請求的網(wǎng)站是被允許的那么就能拿到相應(yīng)的數(shù)據(jù),如果這個網(wǎng)站沒有被允許則請求失??;這個方法有一個缺陷就是兼容性的問題,要在ie以上瀏覽器才能支持;所以這個方法在移動端使用的可能更多一些,PC端如果要兼容低版本的ie可能就不大適合了;

降域

第三種方法要說的是降域,這個方法用起來也是比較簡單,利用document.domain去允許不同的二級域之間的跨域;如a.taobao.com和b.taobao.com,如果設(shè)置了document.domain = 'taobao.com',那么a.taobao.com和b.taobao.com就可以實現(xiàn)跨域;但是有一點需要注意的是,不同頂級域名之間是沒法通過降域去實現(xiàn)跨域的,如a.taobao.com和b.baidu.com,這兩者之間再怎么降域也實現(xiàn)不了跨域;

以上就是解決跨域最常用的方法,我們可以根據(jù)自己具體的業(yè)務(wù)場景去使用相應(yīng)的方法;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是同源策略 同源策略限制從一個源加載的文檔或腳本如何與來自另一個源的資源進(jìn)行交互。這是一個用于隔離潛在惡意文件...
    liushaung閱讀 443評論 0 1
  • 發(fā)現(xiàn)了有3種辦法可以解決這個問題, 1. 設(shè)置瀏覽器的options, enable access data so...
    fuxiaotao閱讀 944評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,021評論 25 709
  • 當(dāng)我從夜的夢中哭醒 您已消失 為什么我又要想您呢 說好的不再悲傷 只是這風(fēng)又帶來綠葉的訊息 那一天 我忍不住站在樹...
    老徐家的小七閱讀 210評論 0 0
  • 2017年6月2日 最讓我沒想到的是,元寶還沒到打疫苗的年齡,就讓我先打了疫苗。 昨天晚上八點多時候,我一手拿著手...
    葉問醬閱讀 243評論 0 1

友情鏈接更多精彩內(nèi)容