如何實現(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)跨域抚垃;但是有一點(diǎn)需要注意的是,不同頂級域名之間是沒法通過降域去實現(xiàn)跨域的趟大,如a.taobao.com和b.baidu.com鹤树,這兩者之間再怎么降域也實現(xiàn)不了跨域;
以上就是解決跨域最常用的方法逊朽,我們可以根據(jù)自己具體的業(yè)務(wù)場景去使用相應(yīng)的方法罕伯;