本文主要和大家分享JS跨域處理詳解,解決js的跨域問題可以使用Jsonp,希望能幫助大家。
Js不可以跨網域請求資料。
什麼是跨域:
#1、網域不同
2、域名相同連接埠不同。
解決js的跨域問題可以使用Jsonp,使用 js的特性繞過跨域請求。 Js可以跨網域載入js#檔。
原理圖:
#實作方法:
ajax中要注意的地方(一定要加 dataType ):
$.ajax({ url : "http://localhost:8088/user/token/" + _ticket, dataType : "jsonp", type : "GET", success : function(data){ //回调函数 } });
Spring中注意的地方:
@RequestMapping(value="/user/token/{token}", produces=MediaType.APPLICATION_JSON_UTF8_VALUE) @ResponseBody public String getUserByToken(@PathVariable String token, String callback) { //请求参数中要含 callback 方法名 //把结果封装成一个js语句响应 return callback + "(" + result + ");"; }
produce處還有一種寫法 :produces="application/json;charset=utf-8"
如果專案中使用的Spring 是4.1以後的版本,可以使用以下返回方式:
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
mappingJacksonValue.setJsonpFunction(# callback);
handler的回傳型別可以改成object型別。
#以上是JS跨域處理詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!