如何實現跨域
跨域應該是我們經常會遇到的問題,解決跨域也應當是前端人員必備的技能;如當下很多網站都開始轉向https,那么很容易就會出現http和https之間跨域的問題;下面就來闡述一下實現跨域的幾種方法:
JSONP
JSONP實現跨域的方法應該是我們最常用的方法,它主要是利用<script>標簽沒有跨域的限制去實現跨域;因為通過<script>標簽可以去引用任何網站的腳本資源,沒有任何的限制,所以就有人利用這個特性搞了一些事情,通過src引入的腳本資源通過后端配合處理,會返回一個回調函數,這個回調函數里面是json格式的數據,只需要執行這個回調函數即可,那么在這之前本地腳本里已經創建了相應的回調函數,只要等這個<script>標簽加載完畢就會立即執行,這時就會得到不同源的數據;
CORS
CORS方法實現跨域這一方法是最簡單的,前端也就是和正常ajax請求數據完全一樣,只需要后端做相應的處理就可以了;后端會在響應頭里加上Access-Control-Allow-Origin允許哪些網站進行跨域,如果請求的網站是被允許的那么就能拿到相應的數據,如果這個網站沒有被允許則請求失??;這個方法有一個缺陷就是兼容性的問題,要在ie以上瀏覽器才能支持;所以這個方法在移動端使用的可能更多一些,PC端如果要兼容低版本的ie可能就不大適合了;
降域
第三種方法要說的是降域,這個方法用起來也是比較簡單,利用document.domain去允許不同的二級域之間的跨域;如a.taobao.com和b.taobao.com,如果設置了document.domain = 'taobao.com',那么a.taobao.com和b.taobao.com就可以實現跨域;但是有一點需要注意的是,不同頂級域名之間是沒法通過降域去實現跨域的,如a.taobao.com和b.baidu.com,這兩者之間再怎么降域也實現不了跨域;
以上就是解決跨域最常用的方法,我們可以根據自己具體的業務場景去使用相應的方法;