首頁常見問題正文

處理跨域請求

更新時(shí)間:2024-03-11 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  $.getJSON()方法支持跨域請求。在網(wǎng)絡(luò)中,協(xié)議、域名、端口號有任何一個(gè)不同都屬于不同的域,而跨域就是指一個(gè)域的頁面請求另外一個(gè)域的資源。出于安全考慮,瀏覽器限制了跨域行為,只允許頁面訪問本域的資源,這種限制稱為同源策略。

  如果需要跨域請求,可以通過JSONP(JSON with Padding)、CORS(Cross-Origin Resource Sharing)等方案來實(shí)現(xiàn)。$.getJSON()方法采用JSONP方案實(shí)現(xiàn)跨域請求,其使用方式非常簡單,在請求地址后增加url參數(shù)“callback=?”即可。其中,callback表示回調(diào)函數(shù),它的值“?”將被$.getJSON()方法替換成一個(gè)自動(dòng)生成的函數(shù)名。

  為讀者更好地理解跨域請求,下面通過一個(gè)案例進(jìn)行演示。由于JSONP需要服務(wù)器端的配合,因此先創(chuàng)建一個(gè)jsonp.php用于在服務(wù)器端執(zhí)行,具體代碼如下。

  jsonp.php

1 <?php
2 $callback = $_GET['callback'];
3 echo "$callback(123);";

  在上述代碼中,第2行通過變量$callback接收來自url參數(shù)中的callback回調(diào)函數(shù)名,第3行對變量進(jìn)行了字符串拼接,拼接結(jié)果為“回調(diào)函數(shù)名(123);”,表示調(diào)用函數(shù)并傳遞參數(shù)“123”?!?23”是返回給瀏覽器的數(shù)據(jù),此處可以根據(jù)實(shí)際需求換成其他數(shù)據(jù)。

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!