JSONP (JSON with Padding)是一種解決跨域請求的方法,常見于前端頁面通過瀏覽器請求后端API接口數據時使用。當頁面A向不同域名或者協議的頁面B發送Ajax請求時,因為瀏覽器的安全機制,請求會被限制,但是JSONP可以繞過這些限制,呈現出相應的數據。在php中,header就是實現JSONP的重要一環。
下面以一個實際的栗子來闡述php jsonp header的用法:
前端頁面代碼:
```
//前端頁面向不同域名或協議的頁面發送Ajax請求
$.ajax({
url: 'https://example.com/getData.php',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'handleData',
data:{
page: 1,
count: 10
}
});
```
后端代碼 getData.php:
```
$page = $_GET['page'];
$count = $_GET['count'];
$data = array(
'code' =>0,
'message' =>'success',
'data' =>array(
array('id'=>1,'name'=>'Tom','age'=>18),
array('id'=>2,'name'=>'Jerry','age'=>22)
)
);
$data = json_encode($data);
//設置跨域響應頭
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With, Content-Type, Accept');
header('Content-type: application/javascript');
echo $_GET['callback'].'('. $data .')'; //輸出JSONP格式的數據
```
前端頁面代碼中的dataType設置為jsonp,同時指定了jsonp和jsonpCallback參數的值,即后端返回的數據類型及回調函數的名稱。在后端代碼中,先解析前端發送過來的數據,然后構造一個JSON數據并以JSONP的方式返回。注意要設置跨域響應頭,否則前端會立即收到一個CORS錯誤。
header中的Access-Control-Allow-Origin字段表示允許的跨域請求的來源,通常為*,表示接收任意域名請求;Access-Control-Allow-Methods字段指定了支持的跨域請求方法;Access-Control-Allow-Headers字段指定了支持的跨域請求所攜帶的數據類型,如Content-Type、Accept等。最后Content-type字段指定了返回的數據類型為application/javascript。
總結一下,php中使用header設置跨域響應頭是實現JSONP的重要一環,而JSONP的使用能夠繞過瀏覽器同源策略的限制,以更自由安全的方式進行跨域請求。
網站導航
- zblogPHP模板zbpkf
- zblog免費模板zblogfree
- zblog模板學習zblogxuexi
- zblogPHP仿站zbpfang