久久精品A一国产成人免费网站-久久精品爱国产免费久久-久久精品操-久久精品成人免费看-国产一级毛片在线-国产一级免费片

 
您現在的位置:首頁 ? 知識庫 ? 軟件開發 軟件開發
jsonp & CORS輕松解決跨域難題
發布日期:2018-04-11

JSONP

jsonp 的原理很簡單,利用了【前端請求靜態資源的時候不存在跨域問題】這個思路。

但是 只支持 get,只支持 get,只支持 get。

注意一點,既然這個方法叫 jsonp,后端數據一定要使用 json 數據,不能隨便的搞個字符串什么的,不然你會覺得結果莫名其妙的。

前端 jQuery 寫法

$.ajax({
type: "get",
url: baseUrl + "/jsonp/get",
dataType: "jsonp",
success: function(response) {
$("#response").val(JSON.stringify(response));
}
});

dataType: “jsonp”。除了這個,其他配置和普通的請求是一樣的。

后端 SpringMVC 配置

如果你也使用 SpringMVC,那么配置一個 jsonp 的 Advice 就可以了,這樣我們寫的每一個 Controller 方法就完全不需要考慮客戶端到底是不是 jsonp 請求了,Spring 會自動做相應的處理。

@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice(){
// 這樣如果請求中帶 callback 參數,Spring 就知道這個是 jsonp 的請求了
super("callback");
}
}

以上寫法要求 SpringMVC 版本不低于 3.2,低于 3.2 的我只能說,你們該升級了。

后端非 SpringMVC 配置

以前剛工作的時候,Struts2 還紅遍天,幾年的光景,SpringMVC 就基本統治下來了國內市場。

偷懶一下,這里貼個偽代碼吧,在我們的方法返回前端之前調一下 wrap 方法:

@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice(){
// 這樣如果請求中帶 callback 參數,Spring 就知道這個是 jsonp 的請求了
super("callback");
}
}

CORS

Cross-Origin Resource Sharing

畢竟 jsonp 只支持 get 請求,肯定不能滿足我們的所有的請求需要,所以才需要搬出 CORS。

國內的 web 開發者還是比較苦逼的,用戶死不升級瀏覽器,老板還死要開發者做兼容。

CORS 支持以下瀏覽器,目前來看,瀏覽器的問題已經越來越不重要了,連淘寶都不支持 IE7 了~~~

  • Chrome 3+

  • Firefox 3.5+

  • Opera 12+

  • Safari 4+

  • Internet Explorer 8+

前端 jQuery 寫法

直接看代碼吧:

$.ajax({
type: "POST",
url: baseUrl + "/jsonp/post",
dataType: 'json',
crossDomain: true,
xhrFields: {
withCredentials: true
},
data: {
name: "name_from_frontend"
},
success: function (response) {
console.log(response)// 返回的 json 數據
$("#response").val(JSON.stringify(response));
}
});

dataType: “json”,這里是 json,不是 jsonp,不是 jsonp,不是 jsonp。

crossDomain: true,這里代表使用跨域請求

xhrFields: {withCredentials: true},這樣配置就可以把 cookie 帶過去了,不然我們連 session 都沒法維護,很多人都栽在這里。當然,如果你沒有這個需求,也就不需要配置這個了。

后端 SpringMVC 配置

對于大部分的 web 項目,一般都會有 mvc 相關的配置類,此類繼承自 WebMvcConfigurerAdapter。如果你也使用 SpringMVC 4.2 以上的版本的話,直接像下面這樣添加這個方法就可以了:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**/*").allowedOrigins("*");
}
}

如果很不幸你的項目中 SpringMVC 版本低于 4.2,那么需要「曲線救國」一下:

public class CrossDomainFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.addHeader("Access-Control-Allow-Origin", "*");// 如果提示 * 不行,請往下看
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
filterChain.doFilter(request, response);
}
}

在 web.xml 中配置下 filter:

<filter>
<filter-name>CrossDomainFilter</filter-name>
<filter-class>com.javadoop.filters.CrossDomainFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CrossDomainFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

有很多項目用 shiro 的,也可以通過配置 shiro 過濾器的方式,這里就不介紹了。

注意了,我說的是很籠統的配置,對于大部分項目是可以這么籠統地配置的。文中類似 “*” 這種配置讀者應該都能知道怎么配。

如果讀者發現瀏覽器提示不能用 ‘*’ 符號,那讀者可以在上面的 filter 中根據 request 對象拿到請求頭中的 referer(request.getHeader(“referer”)),然后動態地設置 “Access-Control-Allow-Origin”:

String referer = request.getHeader("referer");
if (StringUtils.isNotBlank(referer)) {
URL url = new URL(referer);
String origin = url.getProtocol() + "://" + url.getHost();
response.addHeader("Access-Control-Allow-Origin", origin);
} else {
response.addHeader("Access-Control-Allow-Origin", "*");
}

前端非 jQuery 寫法

jQuery 一招鮮吃遍天的日子是徹底不在了,這里就說說如果不使用 jQuery 的話,怎么解決 post 跨域的問題。

來一段原生 js 介紹下:

function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// 如果有 withCredentials 這個屬性,那么可以肯定是 XMLHTTPRequest2 對象。看第三個參數
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// 此對象是 IE 用來跨域請求的
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// 如果是這樣,很不幸,瀏覽器不支持 CORS
xhr = null;
}
return xhr;
}
var xhr = createCORSRequest('GET', url);
if (!xhr) {
throw new Error('CORS not supported');
}

其中,Chrome,Firefox,Opera,Safari 這些「程序員友好」的瀏覽器使用的是 XMLHTTPRequest2 對象。IE 使用的是 XDomainRequest。

  • 1.公司登記注冊于2003年1月27日,清遠市桑達電子網絡媒體有限公司
    2.公司2006年起成為清遠市政府定點協議供貨商,電子采購供貨商
    3.公司2007年被清遠市相關政府部門評為安防行業狀元
    4.公司2007年起成為長城電腦清遠如意服務站(SP368)
    5.公司2007年承建清遠市橫河路口電子警察工程,開創清遠電子警察先河。
  • 6.公司2007年起成為IBM合作伙伴、公司2010年底成為金蝶軟件清遠金牌代理(伙伴編號:30030013)
    7.公司組團隊參加南方都市報組織的創富評選,獲廣東80強。公司申請多項軟件著作權、專利權
    8.2016年起公司成為粵東西北地區為數不多的雙軟企業,確立“讓軟件驅動世界,讓智能改變生活!"企業理想
    9.2016-01-29更名為廣東互動電子網絡媒體有限公司
    10.2021-01-13更名為廣東互動電子有限公司
  • 投資合作咨詢熱線電話:0763-3391888 3323588
  • 做一個負責任的百年企業! 天行健,君子以自強不息;地勢坤,君子以厚德載物;
    為用戶創造價值! 讓軟件驅動世界; 讓智能改變生活; 超越顧客期望,幫助顧客成功;
    對客戶負責,對員工負責,對企業命運負責!幫助支持公司的客戶成功;幫助忠誠于公司的員工成功!
  • 聯系電話:0763-3391888 3323588 3318977
    服務熱線:18023314222 QQ:529623964
  • 工作QQ:2501204690 商務QQ: 602045550
    投資及業務投訴QQ: 529623964
    微信:小米哥 微信號:qysed3391888
    騰訊微博:桑達網絡-基石與起點
  • E-MAIL:222#QYSED.CN ok3391888#163.com (請用@替換#)
在線客服
  • 系統集成咨詢
    點擊這里給我發消息
  • 網站\微信\軟件咨詢
    點擊這里給我發消息
  • 售后服務
    點擊這里給我發消息
  • 投資合作
    點擊這里給我發消息
少妇做爰免费视频网站| 欧美黑人XXXX| 性欧美ⅩXXXX极品少妇小说| FREESEX性中国熟妇| 成·人免费午夜无码不卡| 久久国产精品波多野结衣AV| 无码播放一区二区三区| MM1313亚洲国产精品无码试| 久久亚洲熟妇熟女ⅩXXXHD| 亚洲18色成人网站WWW| 饭桌上故意张开腿让公在线观看| 内射到高潮的H小说| 亚洲午夜久久久影院伊人 | 亚洲AV永久无码精品尤物在线| 豆国产97在线 | 亚洲| 娇喘潮喷抽搐高潮在线观看视频 | 丁香五月婷激情综合第九色| 欧美XXXX黑人又粗又长精品| 野花社区日本免费图片| 极品婬荡少妇XXXX欧美图片| 亚洲AV永久爆乳无码5区| 国产精品成熟老妇女| 日本猛少妇色XXXXX猛叫小说| 中文字幕亚洲无线码在线一区| 久久99国产精品尤物| 亚洲AV无码专区国产乱码不卡 | 在火车和后妈妈谁在一起是什么书| 国内精自线一二三四2021| 日韩一中文字无码不卡| 一本丁香综合久久久久不卡网站| 超碰人人澡人人胔| 人妻 日韩精品 中文字幕| 亚洲熟妇无码AV另类VR影视| 国产成人麻豆亚洲综合无码精品| 免费日韩无人区码卡二卡3卡| 无码人妻一区二区三区免费看成人| AV在线播放网站| 久久精品岛国AV一区二区无码 | 亚洲人成色4444在线观看| 豆国产93在线 | 亚洲| 日韩人妻无码一区二区三区久久| 嘼皇PORONOⅤIDEOS极| 精品一线二线三线区别大吗| 亚洲国产精品特色大片观看完整版| 丰满少妇人妻HD高清大乳在线| 丝袜 中出 制服 人妻 美腿| 成人毛片100免费观看| 内射中出无码护士在线| ASIAN艳丽的少妇PICS| 人妻少妇无码专视频在线| 一二三四日本中文在线| 国产亚洲AV☆浪潮在线观看| 日韩精品无码人妻一区二区三区| 成人影院YY111111在线| 日本亚洲欧美一区二区麻豆| 伊人精品成人久久综合| 久久久久精品午夜福利| 亚洲AV无码乱码忘忧草亚洲人| 放荡娇妻张开腿任人玩H| 天堂久久天堂AV色综合| 成年大片免费视频播放| 熟妇毛耸耸浓密茂盛| 国产色视频一区二区三区QQ号| 少妇高潮惨叫久久久久久 | 色欲AV无码中字乱人伦在线| JAZZJAZZJAZZ日本| 日日狠狠久久8888偷偷色| 国产亚洲精品第一综合麻豆| 亚洲 校园 欧美 国产 另类| 久久精品亚洲男人的天堂| 亚洲AV无码精品狠狠爱| 久久久久久A亚洲欧洲AV| 97人妻人人揉人人躁人人| 久久亚洲中文字幕伊人久久大| 99RE6在线视频精品免费下载| 色综合视频一区二区三区44| 黑色丝袜老师自慰喷水浪潮免费| 四川少妇XXXX内谢欧美| 国产精品视频YJIZZ| 亚洲亚洲人成综合网络| 欧美成A高清在线观看| 东京热无码一区二区三区AV| 性色A∨精品高清在线观看 | 99无码精品二区在线视频| 老牛aV无码一区二区人妻| 中国熟妇人妻XXXXX中文| 男女无遮挡猛进猛出免费观看视频 | 亚洲女久久久噜噜噜熟女| 精品人妻一区二区三区视频53一| 新妺妺窝人体色WWW| 久久久久久久久久久精品 | 秋霞电影院午夜无码中文| 国产AV无码专区亚汌A√| 亚洲人成无码WWW久久久| 欧美激情一区蜜桃传媒| 国产成人精品久久综合| 天堂AV旡码AV毛片毛片免费| 国产精品三级一区二区| 亚洲一区二区三区在线网址| 日本丰满少妇XXXX| 黑人与日本XXXXXTV| 18禁黄污无遮挡无码网站| 男人女人做爽爽18禁免费| 粉嫩AV无码一区二区三区| 亚洲国产精品一区二区成人片国内| 男女嘿咻发声动态图| 国产成人精品一区二区秒播| 亚洲综合日韩久久成人AV| 日本大一大二大三在一起读吗| 国精产品一区二区三区糖心269 | 军人边走边吮她的花蒂| 又白又大的两座峰| 色噜噜狠狠狠狠色综合久一| 国产精品亚洲专区无码蜜芽 | 久久精品国产亚洲无删除| 尝到了甜头两人每天都会想方设法 | 国产亚洲美女精品久久久久| 中文字幕亚洲一区二区VA在线| 我把护士日出水了视频90分钟| 蜜桃av中文字幕| 国模无码一区二区三区不卡| 办公室撕开奶罩揉吮奶头H文| 免费少妇A级毛片人成网| 波多野结衣放荡的护士| 亚洲蜜桃无码一区二区三区| 日本丰满少妇高潮呻吟| 久久 国产 尿 小便 嘘嘘| 纯爱无遮挡H肉动漫| 亚洲老熟女 @ TUBEUM TV| 日精品一区二区蜜桃AV| 久久久久久亚洲精品无码| 与亲女洗澡时伦了毛片| 天天AV天天爽无码中文| 免费视频玩乳吃奶不遮挡网站 | 亚洲AV日韩AV高潮喷无码| 久久亚洲精品成人无码网站夜色| 国产99久久久国产精品成人小说| 曰批视频免费看30分钟| 少妇人妻综合久久中文字幕| 久久久久人妻一区二区三区| 高潮VIDEOSSEXOHD潮喷| 在线A毛片免费视频观看| 无码人妻一区二区三区免水牛视频 | 六十路七十路熟女乱码| 696969大但人文艺术主题| 亚洲AV无码一区二区少妇| 日本国产网曝视频在线观看| 久久婷婷五月综合色俺也想去| 尝到了甜头两人每天都会想方设法| 亚洲熟妇AV不卡一区二区三区 | 久久久国产乱子伦精品| 国产热A欧美热A在线视频| 中国老太毛茸茸XXXXHD| 天天AV天天翘天天综合网色鬼| 欧美精品久久久久久久自慰| 久久久精品国产SM最大网站| 国产精品久久久久久久久久免费| 中文精品一卡2卡3卡4卡| 性欧美大战久久久久久久久| 日本丰满护士爆乳XXⅩ| 男男车车CP视频| 久久久亚洲熟妇熟女| 加勒比色综合久久久久久久久| 国产成人综合色在线观看网站| 俺去俺来也在线WWW色官网| 2018一本久道在线线观看| 一本大道东京热无码AⅤ| 亚洲国产AV玩弄放荡人妇| 午夜成人无码福利免费视频| 少妇伦子伦精品无码STYLES| 女人被爽到高潮视频免费国产| 超碰97中文字幕总站| 中国西西大胆女人裸体艺术| 亚洲成AV人最新地堂无码| 欧美疯狂3p群体交乱视频丨zu| 国产无遮挡吃胸膜奶免费看| 房东天天吃我奶躁我| HD极品FREE性XXⅩ护士I| 一本大道无码日韩精品影视_| 亚洲AV无码国产丝袜在线观看| 少妇色欲av永久性精品爽妇| 全部免费A级毛片| 馒头型B好还是蝴蝶型B | GOGO全球高清专业大尺度摄影| 岳打开双腿开始配合交换| 亚洲精品国产成人99久久| 午夜在线观看的免费网站| 乱人伦人妻中文字幕不卡| 国产睡熟迷奷系列网站| 国产成人亚洲精品无码车A| 边摸边脱吃奶边高潮视频免费| FREESEXVIDEOS性亚| AV无码人妻一区二区三区在线| 97在线视频免费观看| 7777久久亚洲中文字幕蜜桃| 18款夜间禁用粉色短视频软件| 伊人精品无码一区二区三区电影| 亚洲 日韩 欧美 成人 在线| 性中国VODAFONEWIFI| 我把护士日出水了视频90分钟 |