首頁(yè)常見(jiàn)問(wèn)題正文

處理跨域請(qǐng)求

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

IT培訓(xùn)班

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

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

  為讀者更好地理解跨域請(qǐng)求,下面通過(guò)一個(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行通過(guò)變量$callback接收來(lái)自u(píng)rl參數(shù)中的callback回調(diào)函數(shù)名,第3行對(duì)變量進(jìn)行了字符串拼接,拼接結(jié)果為“回調(diào)函數(shù)名(123);”,表示調(diào)用函數(shù)并傳遞參數(shù)“123”?!?23”是返回給瀏覽器的數(shù)據(jù),此處可以根據(jù)實(shí)際需求換成其他數(shù)據(jù)。

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