1. 程式人生 > >支援跨域的html標籤

支援跨域的html標籤

html中的script、img的src屬性支援跨區,瀏覽器對其沒有限制
傳送的請求都是get請求

script

1.script標籤具有可跨域的特性,瀏覽器對它不限制
2.假設不加dataType:jsonp, jquery底層預設傳送XMLHttpRequest請求。
當用dataType:jsonp,jquery底層建立了script標籤,src=”跨域的地址”。
3.scrip標籤的src中的地址和字尾也沒關係,檔案中指定text/javacript就可以了

    <!--這個script是函式,要寫在上面,下面的script跨域獲取到資料返回的是json(),需要呼叫json(),要是寫在下一個script的下面就找不到了-->

        //script標籤具有可跨域的特性,php返回的是json(),直接呼叫了這個函式
        //這個函式的目的就是為了獲取服務端返回的資料,要執行的內容寫在函式中就可以啦
        <script>
    function jsonp(data){
        //在服務端data是一個字串,到客戶端data轉為了物件(script標籤具有自動轉換的功能)
        //若果是字串的話,格式是這樣的:{"name":"\u5f20\u4e09","age":10}
        //這樣就獲取了服務端的資料,在函式中就可以對服務端的資料進行操作了
        console.log(data);
    }

</script>
<script src="src-api.php?callback=jsonp"></script>

伺服器端的資料模擬(script):

<?php

    header("Content-Type:text/html;charset=utf-8");

    $data = $_GET;

    //假設下面的陣列是在服務端獲取到的資料,需要把這個資料返回到客戶端
    $array = array("name"=>"張三","age"=>10);

    //將物件轉化為json格式的字串
    $info = json_encode($array);

    echo $data["callback"]."(".$info.")";
?>

link標籤

href去請求一個地址,和地址的字尾沒有關係,
在php檔案中已經告訴客戶端伺服器的文字型別了,瀏覽器以該文字型別去解析就行了

<head>
<meta charset="UTF-8">
<title>Title</title>
// 利用link的href屬性跨域
<link rel="stylesheet" href="02link.php">

模擬的服務端php檔案(link)

<?php
    //告訴客戶端伺服器的文字型別
    header("Content-Type:text/css;charset=utf-8");
    echo "body{background-color: red}"

    //若果客戶端需要輸出js檔案的話,文字型別就是text/javascript
    //header("Content-Type:text/javascript;charset=utf-8");
    //echo "alert(1)";
?>

img