輕量級網站建設jsonp跨域簡單例項

hahadelphi發表於2021-09-09

 瀏覽器的同源策略,限制指令碼程式只能和同協議,同域名,同埠的指令碼進行互動,包括共享和傳遞變數,cookie的傳遞。儘管瀏覽器不允許頁面指令碼跨域讀取資料,但是允許html引用跨域的資源,比如指令碼程式,css,圖片,等等,因為script,iframe的src是不存在跨域的。 

$.get("",     {}, function(data){     alert(' error:'+data)     }, "html");

比如上面的請求,因為是跨域讀取資料,所以,無法獲取想要的資料jsonp是非官方協議,它是在服務端生成script tags返回到客戶端,在客戶端透過javscript callback形式實現跨域訪問。 

 

jsonp原理是客戶端定義一個callback,然後把callback名字傳送至服務端,服務端生成json資料,然後以javascript的方式,生成一個以callback名字的function的javascript函式執行形式,將json資料以入參方式放到function中,就 生成了一個js的函式執行語法的文件,傳到客戶端。客戶端瀏覽器解析script,執行服務端返回的javascript片段,返 回的資料作為引數,傳入到客戶端定義的callback中動態執行。 

例項  

 

<script type="text/javascript">                 function sayHello(result){                     alert(result());                  }          </script>       <script type="text/javascript"class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original=""></script>

 

<%            String script="function show(){ return 'hello';}";            //String script="{name:'yuyong'}";            String callback=request.getParameter("callback");            out.println(callback+"("+script+")");     >

透過jsonp,完美的實現了跨域。 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2471/viewspace-2815538/,如需轉載,請註明出處,否則將追究法律責任。

相關文章