天天看點

通過JsonP解決跨域問題

由于浏覽器前端的同源政策,我們無法通過頁面向非同源的位址發送ajax請求來進行互動,這時候,JsonP政策可以作為一種能夠跨域互動的解決方案。

Jsonp(JSON with Padding) 是 json 的一種"使用模式",可以讓網頁從别的域名(網站)那擷取資料,即跨域讀取資料。

原理為,JavaScript标簽是可以進行跨域通路的,是以可以通過JavaScript标簽,将所需要的資料通過伺服器傳輸到界面,并通過參數的傳遞想通過回調進行處理的函數,然後進行通過背景伺服器進行拼裝成js可執行代碼傳回前台,進行回調。

前台代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP 執行個體</title>
</head>
<body>
<div id="div1"></div>
<script type="text/javascript">
function callbackFunction(result)
{
    var html = '<ul>';
    for(var i = 0; i < result.length; i++)
    {
        html += '<li>' + result[i] + '</li>';
    }
    html += '</ul>';
    $("#div1").html(html);
}
</script>
<script type="text/javascript" src="https://XXXXXXXXX/XXXX/xxx.do?jsoncallback=callbackFunction"></script>
</body>
</html>
           

後端傳回:

xxx.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
${param.jsoncallback}(["JIM","LILY","ELLEN"])
           

繼續閱讀