首頁  >  文章  >  web前端  >  jQuery跨域問題解決方案_jquery

jQuery跨域問題解決方案_jquery

WBOY
WBOY原創
2016-05-16 15:47:401631瀏覽

透過XMLHTTPRquest請求不同域上的數據,原來js跨域存取是後台有個處理路徑「/test」的函數。下面把具體解決方案介紹如下。

後台處理路徑「/test」的函數:

複製程式碼 程式碼如下:

//路徑處理
app.get("/test",user.test);
//處理函數
exports.test=function(req,res){
    res.end("alert('JS跨域存取')");
};

 外部有一個網頁需要存取路徑」/test「下的內容,則可以透過JS腳本檔案來跨網域存取:

複製程式碼 程式碼如下:

//處理函數
<script><br />     function method(data){<br />         console.log(data);<br />     }<br /> </script>
//跨網域存取

 結果會在目前的網頁中彈出一個視窗:

jQuery中JSONP跨域存取的實作:

同樣在背景有一個處理路徑「/test」的函數:

//路径处理
app.get("/test",user.test);
//处理函数
exports.test=function(req,res){
 res.end("method("+JSON.stringify({mes:"跨域访问成功!"})+")");
};
 外部有一个网页需要访问路径”/test“下的内容,通过JSONP来实现跨域访问:

//引入跨域访问中的jQuery函数库
<script src="http://localhost:3000/js/jquery-1.9.1.min.js"></script>
//jQuery中JSONP跨域访问
<script>
  $.ajax({
    url:"http://localhost:3000/test",
    type:"get",
    success:function(data){
      $("body").append(data.mes);
    },
    dataType:"jsonp",
    jsonpCallback:"method"
  });
</script>

 結果會在目前的網頁中顯示以下資訊:

透過上述程式碼我們可以看出JSOPN跨域存取和原始的JS跨域存取的不同之處是JSONP不需要寫入處理跨域存取的函數(例如上述方法中使用的method函數),在JSONP跨網域存取時會自動幫我們建立處理跨網域存取的函數。

JSONP跨域存取的優點:

1.它不像XMLHTTPRequest物件實現的AJAX請求那樣受到同源策略的限制;

2.它的相容性比較好,不需要XMLHTTPRequest或ActiveX的支援;

3.在請求完成後可以透過呼叫callback的方法傳回結果。

JSONP跨域存取的缺點:

1.它只支援GET請求而不支援POST及其他類型的請求;

2.它只支援跨域HTTP請求這種情況,不能解決不同域的兩個頁面之間如何進行JavaScript呼叫的問題。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn