什么是同源策略?
阮一峰的博客 同源策略
同源策略的解決方法: 跨域傳輸
img 標簽的src是可以引入其他域名下的圖片
script標簽的src屬性同理 ,也可以引入其他域名下的js文件,並執行
1.script的屬性引入文件(頁面地址)的時候是允許跨域
2.在頁面地址后,拼接?callback=參數,讓后端能接受到我們的參數
3.需要后端的配合,接收傳過來的參數(函數名稱),把我們處理好的json數據,作為函數的參數,再傳回到前端
4.把我處理好的json數據,作為函數的參數在傳回到前端
核心技術:
前端定義函數后端調用函數
(前端定義函數發送給后台,后台把數據作為定義函數的形參傳給前端)
跨域傳輸例子:cross.html 跨域數據傳輸
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 </head>
7 <body>
8 <!--
9 img 標簽的 src 是可以引入其他域名下的圖片,
10 script 標簽的 src屬性同理,也可以引入其他域名(跨域)下的js文件,並執行
11 -->
12 <!--
13 1. script的src屬性引入文件(頁面地址)的時候是允許跨域
14 2. 在src地址后,拼接?callback=參數,讓后端能接收到我們參數
15 3. 需要后端配合,接收傳過來的參數(函數名稱),
16 4. 把我們處理好的json數據,作為函數的參數再傳回到前端
17 核心技術:
18 前端定義函數,后端調用函數。
19 (前端定義函數發送給后台,后台把數據作為定義函數的參數傳給前端。)
20 -->
21 <img src="http://www.ruanyifeng.com/blogimg/asset/2016/bg2016041202.jpg" alt="">
22 </body>
23 </html>
24 <script>
25 function getCrossJson(json) {
26 console.log(json);
27 alert("我們在html頁面創建了一個函數,但是不在這里調用");
28 }
29 </script>
30 <!-- script 可以加載文件,並執行這些文件 -->
31 <!--<script src="http://localhost/AJAX/day02/13_cross.php"></script>-->
32 <!-- 跨域加載php文件 --> 33 <script src="http://127.0.0.1/AJAX/cross.php?callback=getCrossJson"></script>
在服務器中的cross.php
1 <?php
2 header('Content-Type:text/javascript;charset=utf-8;');
3 // echo 'getCrossJson()'; 寫死的一個函數
4 $callback = $_GET['callback']; 5 // 讀取一份json文件,把它放到$jsonStr變量里
6 $jsonStr = file_get_contents('nav.json');
7 echo "$callback($jsonStr)"; 8 ?>