什麼是跨域,什麼是同源

shirleyYing發表於2017-02-24

所謂跨域

  1.就是跨域名,跨埠,跨協議

     例如:如果有兩個伺服器,伺服器A和伺服器B,伺服器A上儲存了php資料,script,甚至是css這些檔案,而你在伺服器B上只寫了html,然後你所在的伺服器B上動態建立script,css,php資料(使用ajax請求),向伺服器A上請求你想要的script,css,php數請求據(使用ajax)這些檔案,請求這些檔案後,你再在伺服器B上執行你的html,雖然你的地址是在伺服器B上,但是你還是可以執行效果與在伺服器A上執行的效果是一樣的,這樣就是跨域名,跨埠,跨協議,實現了跨域。

  簡單來說,就是你請求的檔案,只要含有“src”,“href”這些屬性,你就能在其他伺服器上,請求你所需要的檔案,然後在自己的伺服器上執行,就實現了跨域(跨域名,跨埠,跨協議)

原生的動態請求script檔案 

  var _script = document.createElement("script");
  _script.src="http://10.9.156.108/html5/Ajax/api/sendMessage.php?user="+_user+"message="+_message;
  _script.type="text/javascript";

jQuery跨域請求script檔案

$(document).ready(function(){
  //getJSON 後面帶引數,如果不帶引數預設不跨域 ,帶了引數跨域

  //跨域優先
  $.<link rel="icon" href="../img/favicon.ico" type="image/x-icon">("http://10.9.156.108/HTML5/lesson24/test.js?callback=?",[data],function(){});

  //跨域  有getJSON 和 jsonp 兩種方式
  $.get("http://10.9.156.108/HTML5/lesson24/test.js=",null,function(){},"jsonp");
   
});

 

所謂同源

  1.就是同域名,同埠,同協議

  例如:如果你有一個伺服器A,你所需要的script,css,php檔案都在伺服器A,你寫的html也在伺服器A上,然後執行,出現了效果,如果你想在另一臺電腦上執行你的專案(注意另一臺電腦無論有沒有開啟伺服器,效果還是會顯示出來的),只要把你寫在伺服器A上的協議,域名,埠以及你的專案名稱複製下來,在另一臺電腦上執行,同樣會出現相同的效果,這就實現了同源。

  簡單來說,就是你的協議,域名,埠甚至專案名稱都一樣,不同電腦都能實現同樣的效果。

 

無論是同臺電腦,還是不同臺電腦,與是不是同一臺電腦沒有關係,都能實現跨域和同源。

 

麼是協議,域名,埠?

 

解釋:假如一個網址是  http://baidu.com:8080?user=name&pwd=password

 

http://   是協議   

baidu.com  是域名(注意:前面加上“wwww”即www.baidu.com不是域名)

8080  是埠    

user=name&pwd=password   是地址帶的引數

 

相關文章