javascript
JS的跨域理解
前言
周一的學(xué)院點開題被批的很慘,換了個校長,各種被抓嚴(yán),班上已經(jīng)有兩個同學(xué)打算休學(xué)了。哎,這周的聚會可能是大家集聚的最后一次吧。熬著吧,還是學(xué)習(xí)我的前端,不管老板學(xué)校咋逼了,找個好工作才是王道。今天把學(xué)習(xí)的幾種跨域方法做個小結(jié)吧,不然就很容易忘了。
什么是跨域?
JavaScript處于安全方面的考慮,不允許跨域調(diào)用其他頁面的對象。也就是說a.com域名下的JS無法操作b.com或者c.a.com域名下的對象。JS跨域就是要解決在不同的域之間的數(shù)據(jù)傳輸或通信。只要是協(xié)議、域名、端口有任何一個的不同,都被當(dāng)做是不同的域。如下所示:
JSONP跨域
JsonP跨域是我們最常見的跨域方法,它所基于的原理:直接通過XMLHttpRequest是不能請求不同域的數(shù)據(jù),但是我們可以在頁面中引入不同域的JS文件。
假設(shè)a.html頁面里面要獲取http://b.com/data.php里面的json數(shù)據(jù)。那么我們可以在a.html頁面中可以這樣實現(xiàn):
<script>function cb(jsondata){//處理獲得的json數(shù)據(jù) } </script> <script src="http://b.com/data.php?callback=cb"></script>在創(chuàng)建的script標(biāo)簽里src的url后面有個?callback=cb,這里cb就是我們獲取數(shù)據(jù)后要執(zhí)行的函數(shù)。
在data.php里面,返回的必須是一段可執(zhí)行的JS文件。如下:
<?php$callback = $_GET['callback']; //得到回調(diào)函數(shù)名cb$data = array('a','b','c'); //返回的數(shù)據(jù)echo $callback.'('.json_encode($data).')'; ?>最終a.html頁面得到的結(jié)果是cb(['a','b','c'])。這就得到我們想要的數(shù)據(jù)了。
?
轉(zhuǎn)載于:https://www.cnblogs.com/wait-hua/p/4533806.html
總結(jié)
- 上一篇: 苹果官网区号怎么填?
- 下一篇: gradle idea java ssm