週一的學院點開題被批的很慘,換了個校長,各類被抓嚴,班上已經有兩個同窗打算休學了。哎,這周的聚會多是你們集聚的最後一次吧。熬着吧,仍是學習個人前端,無論老闆學校咋逼了,找個好工做纔是王道。今天把學習的幾種跨域方法作個小結吧,否則就很容易忘了。php
JavaScript處於安全方面的考慮,不容許跨域調用其餘頁面的對象。也就是說a.com域名下的JS沒法操做b.com或者c.a.com域名下的對象。JS跨域就是要解決在不一樣的域之間的數據傳輸或通訊。只要是協議、域名、端口有任何一個的不一樣,都被當作是不一樣的域。以下所示:html
JsonP跨域是咱們最多見的跨域方法,它所基於的原理:直接經過XMLHttpRequest是不能請求不一樣域的數據,可是咱們能夠在頁面中引入不一樣域的JS文件。前端
假設a.html頁面裏面要獲取http://b.com/data.php裏面的json數據。那麼咱們能夠在a.html頁面中能夠這樣實現:json
<script> function cb(jsondata){ //處理得到的json數據 } </script> <script src="http://b.com/data.php?callback=cb"></script>
在建立的script標籤裏src的url後面有個?callback=cb,這裏cb就是咱們獲取數據後要執行的函數。跨域
在data.php裏面,返回的必須是一段可執行的JS文件。以下:安全
<?php $callback = $_GET['callback']; //獲得回調函數名cb $data = array('a','b','c'); //返回的數據 echo $callback.'('.json_encode($data).')'; ?>
最終a.html頁面獲得的結果是cb(['a','b','c'])。這就獲得咱們想要的數據了。函數