摘要:本章目標(biāo)基于項(xiàng)目搭建可以站外請(qǐng)求訪問的跨域資源服務(wù)器。允許所有的請(qǐng)求域名訪問我們的跨域資源,可以固定單條或者多條內(nèi)容,如,只有百度可以訪問我們的跨域資源。
CORS(Cross-Origin Resource Sharing)"跨域資源共享",是一個(gè)W3C標(biāo)準(zhǔn),它允許瀏覽器向跨域服務(wù)器發(fā)送Ajax請(qǐng)求,打破了Ajax只能訪問本站內(nèi)的資源限制,CORS在很多地方都有被使用,微信支付的JS支付就是通過JS向微信服務(wù)器發(fā)送跨域請(qǐng)求。開放Ajax訪問可被跨域訪問的服務(wù)器大大減少了后臺(tái)開發(fā)的工作,前后臺(tái)工作也可以得到很好的明確以及分工,下面我們就看講一下如何讓你的SpringBoot項(xiàng)目支持CORS跨域。
本章目標(biāo)
基于SpringBooot項(xiàng)目搭建可以站外Ajax請(qǐng)求訪問的跨域資源服務(wù)器。
構(gòu)建項(xiàng)目
使用IDEA開發(fā)工具創(chuàng)建一個(gè)SpringBoot項(xiàng)目,預(yù)先添加Web依賴即可,項(xiàng)目結(jié)構(gòu)如下圖1所示:
圖1
CORSConfiguration
我們只需要添加項(xiàng)目Web依賴就可以了,下面我們開始添加CORS的配置信息,我們創(chuàng)建一個(gè)CORSConfiguration配置類,如下圖2所示:
圖2
上圖2內(nèi)我們的CORSConfiguration配置類繼承了WebMvcConfiugrationAdaper父類并且重寫了addCorsMappings方法,我們來簡單介紹下我們的配置信息
addMapping:配置可以被跨域的路徑,可以任意配置,可以具體到直接請(qǐng)求路徑。
allowedMethods:允許所有的請(qǐng)求方法訪問該跨域資源服務(wù)器,如:POST、GET、PUT、DELETE等。
allowedOrigins:允許所有的請(qǐng)求域名訪問我們的跨域資源,可以固定單條或者多條內(nèi)容,如:"http://www.baidu.com",只有百度可以訪問我們的跨域資源。
allowedHeaders:允許所有的請(qǐng)求header訪問,可以自定義設(shè)置任意請(qǐng)求頭信息,如:"X-YAUTH-TOKEN"
編寫跨域資源請(qǐng)求
我們的跨域配置到目前來說已經(jīng)配置完成了,SpringBoot已經(jīng)為我們內(nèi)置相關(guān)配置,我們只需要重寫方法修改部分參數(shù)即可,下面我們來創(chuàng)建一個(gè)測試跨域資源的控制器,如下圖3所示:
圖3
在圖3內(nèi)的IndexController控制器內(nèi),我們僅僅添加了一個(gè)測試返回文本的內(nèi)容,當(dāng)然這個(gè)控制器可以處理任意業(yè)務(wù)邏輯。
測試跨域請(qǐng)求
我們在項(xiàng)目外創(chuàng)建一個(gè)index.html頁面(上傳碼云后會(huì)在resources目錄找到),頁面內(nèi)添加部分jquery代碼,如下圖4所示:
圖4
我們引用了在線的jquery代碼,并且在頁面加載的時(shí)候?yàn)閕d=cors的輸入按鈕綁定點(diǎn)擊事件,點(diǎn)擊按鈕時(shí)就會(huì)請(qǐng)求我們的/cors跨域資源路徑,下面我們來運(yùn)行項(xiàng)目測試下跨域請(qǐng)求,項(xiàng)目運(yùn)行日志如下圖5所示:
圖5
可以看到上圖5內(nèi)項(xiàng)目啟動(dòng)時(shí)SpringBoot內(nèi)置的SpringMVC已經(jīng)把我們的/cors添加到映射集合,我們打開之前編寫的index.html網(wǎng)頁,界面效果如下圖6所示:
圖6
接下來我們點(diǎn)擊“CORS跨域測試”按鈕,查看下效果,如下圖7所示:
圖7
上圖7內(nèi)可以看到,界面給我返回了我們/cors路徑返回的文本內(nèi)容,證明我們的ajax請(qǐng)求完美的通過跨域資源庫訪問了開放跨域的資源路徑。
下面我們來把我們的跨域配置注釋掉,重啟項(xiàng)目后刷新index.html再次點(diǎn)擊“CORS跨域測試”按鈕,界面輸出效果如下圖8所示:
圖8
可以看到我們點(diǎn)擊后并沒有獲取到返回內(nèi)容,而是給我們提示了異常,告訴我們無法加載資源。
本章總結(jié)
本章簡單講解了SpringBoot項(xiàng)目對(duì)CORS請(qǐng)求的處理,完全自定義處理請(qǐng)求路徑,可對(duì)請(qǐng)求頭信息以及請(qǐng)求的域名進(jìn)行控制。
本章代碼已經(jīng)上傳到碼云:
網(wǎng)頁地址:git.oschina.net/jnyqy/lessons
Git地址:git.oschina.net/jnyqy/lessons.git
SpringBoot相關(guān)系列文章,請(qǐng)?jiān)L問:目錄:SpringBoot學(xué)習(xí)目錄,感謝閱讀!
歡迎加入QQ技術(shù)交流群,共同進(jìn)步。
QQ技術(shù)交流群
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67676.html
摘要:本章目標(biāo)繼承采用形式實(shí)現(xiàn)個(gè)性化配置定制。本章代碼已經(jīng)上傳到碼云網(wǎng)頁地址地址相關(guān)系列文章請(qǐng)?jiān)L問目錄學(xué)習(xí)目錄相關(guān)系列文章請(qǐng)?jiān)L問通用查詢框架學(xué)習(xí)目錄相關(guān)系列文章請(qǐng)?jiān)L問目錄學(xué)習(xí)目錄感謝閱讀歡迎加入技術(shù)交流群,共同進(jìn)步。 WebMvcConfigurerAdapter配置類其實(shí)是Spring內(nèi)部的一種配置方式,采用JavaBean的形式來代替?zhèn)鹘y(tǒng)的xml配置文件形式進(jìn)行針對(duì)框架個(gè)性化定制,下面我...
摘要:一什么是摘自官網(wǎng)翻譯采納了建立生產(chǎn)就緒應(yīng)用程序的觀點(diǎn)。優(yōu)先于配置的慣例,旨在讓您盡快啟動(dòng)和運(yùn)行。致力于簡潔,讓開發(fā)者寫更少的配置,程序能夠更快的運(yùn)行和啟動(dòng)。二搭建第一個(gè)程序可以在上建項(xiàng)目,也可以用構(gòu)建。已經(jīng)凌晨了,我要睡了源碼 一.什么是spring boot Takes an opinionated view of building production-ready Spring a...
摘要:本章目的基于平臺(tái)整合分別完成客戶端服務(wù)端的單元測試。在測試控制器內(nèi)添加了三個(gè)測試方法,我們接下來開始編寫單元測試代碼??偨Y(jié)本章主要介紹了基于平臺(tái)的兩種單元測試方式,一種是在服務(wù)端采用注入方式將需要測試的或者注入到測試類中,然后調(diào)用方法即可。 單元測試對(duì)于開發(fā)人員來說是非常熟悉的,我們每天的工作也都是圍繞著開發(fā)與測試進(jìn)行的,在最早的時(shí)候測試都是采用工具Debug模式進(jìn)行調(diào)試程序,后來Ju...
摘要:基于版本基于版本。由于中英行文差異,完全的逐字逐句翻譯會(huì)很冗余啰嗦。譯者在翻譯中同時(shí)參考了谷歌百度有道翻譯的譯文以及編程思想第四版中文版的部分內(nèi)容對(duì)其翻譯死板,生造名詞,語言精煉度差問題進(jìn)行規(guī)避和改正。 來源:LingCoder/OnJava8 主譯: LingCoder 參譯: LortSir 校對(duì):nickChenyx E-mail: 本書原作者為 [美] Bru...
閱讀 1830·2021-10-20 13:49
閱讀 1370·2019-08-30 15:52
閱讀 2875·2019-08-29 16:37
閱讀 1045·2019-08-29 10:55
閱讀 3079·2019-08-26 12:14
閱讀 1658·2019-08-23 17:06
閱讀 3241·2019-08-23 16:59
閱讀 2550·2019-08-23 15:42