當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS的跨域理解
前言
周一的學院點開題被批的很慘,換了個校長,各種被抓嚴,班上已經有兩個同學打算休學了。哎,這周的聚會可能是大家集聚的最后一次吧。熬著吧,還是學習我的前端,不管老板學校咋逼了,找個好工作才是王道。今天把學習的幾種跨域方法做個小結吧,不然就很容易忘了。
什么是跨域?
JavaScript處于安全方面的考慮,不允許跨域調用其他頁面的對象。也就是說a.com域名下的JS無法操作b.com或者c.a.com域名下的對象。JS跨域就是要解決在不同的域之間的數據傳輸或通信。只要是協議、域名、端口有任何一個的不同,都被當做是不同的域。如下所示:
JSONP跨域
JsonP跨域是我們最常見的跨域方法,它所基于的原理:直接通過XMLHttpRequest是不能請求不同域的數據,但是我們可以在頁面中引入不同域的JS文件。
假設a.html頁面里面要獲取http://b.com/data.php里面的json數據。那么我們可以在a.html頁面中可以這樣實現:
<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'])。這就得到我們想要的數據了。
?
轉載于:https://www.cnblogs.com/wait-hua/p/4533806.html
總結
- 上一篇: 苹果官网区号怎么填?
- 下一篇: Java Web项目--使用JSP生成一