亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jsonp跨域請求詳解

2019-11-19 16:05:10
字體:
來源:轉載
供稿:網友

前端時間因為太忙,一直沒有處理跨域這個事情,今天抽了一個小時輕松解決,突然發現上個月又寫了很多重復代碼。因為現在公司項目分為多個工程,前后端完全分離,manage工程做所有業務邏輯處理,app、微信兩個前置工程通過httpClient去調用manage工程的restful接口,而我就是負責微信這個工程,久而久之發現真的重復了很多controller層的代碼,愈發激活了這個所有接口支持瀏覽器跨域請求的封裝。話不多講,見核心代碼

1.定義一個類,繼承MappingJackson2HttpMessageConverter,重寫writeInternal方法,方法里簡單判斷一下是否帶有callback參數,沒有直接返回數據,有的話將數據用callback參數的值括號包裹起來返回。

import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.apache.commons.io.IOUtils;import org.apache.commons.lang3.StringUtils;import org.springframework.http.HttpOutputMessage;import org.springframework.http.converter.HttpMessageNotWritableException;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import com.fasterxml.jackson.core.JsonEncoding;import com.fasterxml.jackson.core.JsonProcessingException;public class CallbackMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { // 做jsonp的支持的標識,在請求參數中加該參數 private String callbackName; @Override protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException,   HttpMessageNotWritableException {  // 從threadLocal中獲取當前的Request對象  HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder    .currentRequestAttributes()).getRequest();  String callbackParam = request.getParameter(callbackName);  if (StringUtils.isEmpty(callbackParam)) {   // 沒有找到callback參數,直接返回json數據   super.writeInternal(object, outputMessage);  } else {   JsonEncoding encoding = getJsonEncoding(outputMessage.getHeaders().getContentType());   try {    String result = callbackParam + "(" + super.getObjectMapper().writeValueAsString(object)      + ");";    IOUtils.write(result, outputMessage.getBody(), encoding.getJavaName());   } catch (JsonProcessingException ex) {    throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getMessage(), ex);   }  } } public String getCallbackName() {  return callbackName; } public void setCallbackName(String callbackName) {  this.callbackName = callbackName; }}

2.定義Java bean,注意修改class掃描路徑,這樣每次請求過來都會調起MappingJackson2HttpMessageConverter類里的riteInternal這個方法,如果請求帶上了callback參數,則將以callbackValue('data')格式的數據返回給前端。

<!-- 定義注解驅動 --> <mvc:annotation-driven>  <mvc:message-converters register-defaults="true">   <bean    class="xxx.xxx.xxx.CallbackMappingJackson2HttpMessageConverter">    <property name="callbackName" value="callback" />   </bean>  </mvc:message-converters> </mvc:annotation-driven>

3.前端通過jquery封裝的ajax方式調用,這里做了一些代碼節省,關鍵代碼已紅色標出

<script type="text/javascript"> var feedback = {  init: function(){   var self = feedback;   self.bind();  },  test: function(data){   console.log("測試jsonp",data)  },  bind: function(){    var self = feedback;    var par = {};     par.callback = 'feedback.test';    $.ajax({     url:"http://manage.danong.com/rest/open/queryInviteList",     data: par,    dataType:'jsonp',     jsonp:'callback',     timeout:3000    });   } } feedback.init();</script>

4.瀏覽器打印log

 

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品电影网站| 国产91成人在在线播放| 亚洲香蕉av在线一区二区三区| 不用播放器成人网| 亚洲品质视频自拍网| 国产成人精品av| 亚洲一区二区久久| 国产日韩在线精品av| 国产精品毛片a∨一区二区三区|国| 久久中文字幕在线| 日韩美女福利视频| 色噜噜亚洲精品中文字幕| www.欧美免费| 久久伊人精品一区二区三区| 欧美黑人xxxⅹ高潮交| 国产亚洲精品va在线观看| 国产精品99蜜臀久久不卡二区| 欧美激情一级欧美精品| 欧美日韩福利视频| 亚洲人成77777在线观看网| 国产一区二区黄| 亚洲成av人片在线观看香蕉| 欧美亚洲第一页| 欧美久久精品午夜青青大伊人| 97超级碰在线看视频免费在线看| 亚洲成人av中文字幕| 亚洲深夜福利在线| 国产精品视频公开费视频| 国产精品第一页在线| 深夜福利日韩在线看| 伊人精品在线观看| 在线视频欧美日韩精品| 日韩成人激情视频| 日韩资源在线观看| 成人欧美一区二区三区黑人孕妇| 亚洲热线99精品视频| 日韩在线观看免费高清| 久久精品视频亚洲| 国产精品免费网站| 欧美三级免费观看| 91深夜福利视频| 色综合久综合久久综合久鬼88| 亚洲福利在线视频| 国产热re99久久6国产精品| 这里只有精品视频在线| 亚洲精品v欧美精品v日韩精品| 久久久久久噜噜噜久久久精品| 国产精品国产三级国产专播精品人| 亚洲bt天天射| 国产精品成人av在线| 精品亚洲男同gayvideo网站| 亚洲美女中文字幕| 久久99亚洲精品| 在线不卡国产精品| 国产精品第七影院| 国产美女精品视频免费观看| 韩国福利视频一区| 久久久久久久久中文字幕| 精品视频偷偷看在线观看| 亚洲欧美精品中文字幕在线| 欧美性猛交xxxx免费看久久久| 亚洲天天在线日亚洲洲精| 国内揄拍国内精品| 尤物99国产成人精品视频| 久久亚洲精品网站| 91免费人成网站在线观看18| 国产精品精品一区二区三区午夜版| 欧美激情在线一区| 97免费中文视频在线观看| 日韩中文字幕视频在线观看| 国产成人精品久久亚洲高清不卡| 久久久久久噜噜噜久久久精品| 欧美日韩另类视频| 高清在线视频日韩欧美| 欧洲亚洲女同hd| 中文字幕久久亚洲| 羞羞色国产精品| 97av在线视频免费播放| 亚洲在线观看视频网站| 国产一区二区三区在线看| 日韩电影中文字幕| 国产成人福利视频| 影音先锋欧美在线资源| 91精品国产综合久久久久久蜜臀| 国产视频在线一区二区| 激情成人中文字幕| 亚洲欧美日韩视频一区| 精品国产一区二区三区久久久狼| 国产精品久久久91| 久久久久久久国产精品| 欧美日韩国产一区二区三区| 91tv亚洲精品香蕉国产一区7ujn| 91精品中文在线| 97香蕉超级碰碰久久免费软件| 亚洲福利在线视频| 久久国产精品免费视频| 中文字幕日本欧美| 一区二区亚洲欧洲国产日韩| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久久亚洲影院你懂的| 欧美又大又硬又粗bbbbb| 国产美女扒开尿口久久久| 成人激情在线观看| 欧美一级大片在线免费观看| 最新的欧美黄色| 国内精品一区二区三区四区| 国产精品黄色av| 一区二区三区 在线观看视| 亚洲成人久久久久| 国产美女高潮久久白浆| 欧美激情视频一区二区三区不卡| 亚洲国产精品热久久| 国产亚洲一区二区在线| 亚洲性69xxxbbb| 亚洲精品视频网上网址在线观看| 久久99精品久久久久久青青91| 亚洲四色影视在线观看| 性欧美xxxx视频在线观看| 国产精品吹潮在线观看| 国产精品9999| 美女视频黄免费的亚洲男人天堂| 91色p视频在线| 国产精品视频免费在线观看| 国内精品久久久久久| 亚洲激情在线视频| 精品中文字幕在线2019| 久久天天躁夜夜躁狠狠躁2022| 欧美在线视频一区二区| 免费99精品国产自在在线| 国产精品电影网| 亚洲日本欧美日韩高观看| 亚洲福利影片在线| 精品国产一区二区三区久久狼黑人| 国产玖玖精品视频| 亚洲国产精品一区二区三区| 国产成人自拍视频在线观看| 在线播放日韩精品| 亚洲美腿欧美激情另类| 国产一区二区在线免费视频| 欧美在线一级va免费观看| 欧美性xxxx18| 在线看日韩欧美| 日韩资源在线观看| 久久精品国产96久久久香蕉| 亚洲自拍av在线| 色综合视频一区中文字幕| 国产91在线视频| 亚洲精品成人网| 亚洲第一区中文字幕| 成人免费福利视频| 国产精品免费一区| 亚洲男人天堂网| 一区二区三区www| 一区二区日韩精品| 成人免费视频xnxx.com| 欧洲成人午夜免费大片| 一区二区福利视频| 国产成人精品网站| 日本高清不卡在线| 欧美一级视频一区二区| 国产精品久久久久国产a级| 成人久久一区二区| 一本色道久久综合狠狠躁篇的优点| 久久香蕉精品香蕉|