springboot中如何通過(guò)cors協(xié)議解決跨域問(wèn)題
1、對(duì)于前后端分離的項(xiàng)目來(lái)說(shuō),如果前端項(xiàng)目與后端項(xiàng)目部署在兩個(gè)不同的域下,那么勢(shì)必會(huì)引起跨域問(wèn)題的出現(xiàn)。
針對(duì)跨域問(wèn)題,我們可能第一個(gè)想到的解決方案就是jsonp,并且以前處理跨域問(wèn)題我基本也是這么處理。
但是jsonp方式也同樣有不足,不管是對(duì)于前端還是后端來(lái)說(shuō),寫法與我們平常的ajax寫法不同,同樣后端也需要作出相應(yīng)的更改。并且,jsonp方式只能通過(guò)get請(qǐng)求方式來(lái)傳遞參數(shù),當(dāng)然也還有其它的不足之處,針對(duì)于此,我并沒有急著使用jsonp的方式來(lái)解決跨域問(wèn)題,去網(wǎng)上找尋其它方式,也就是本文主要所要講的,在springboot中通過(guò)cors協(xié)議解決跨域問(wèn)題。
2、Cors協(xié)議
H5中的新特性:Cross-Origin Resource Sharing(跨域資源共享)。通過(guò)它,我們的開發(fā)者(主要指后端開發(fā)者)可以決定資源是否能被跨域訪問(wèn)。
cors是一個(gè)w3c標(biāo)準(zhǔn),它允許瀏覽器(目前ie8以下還不能被支持)像我們不同源的服務(wù)器發(fā)出xmlHttpRequest請(qǐng)求,我們可以繼續(xù)使用ajax進(jìn)行請(qǐng)求訪問(wèn)。
具體關(guān)于cors協(xié)議的文章 ,可以參考http://chabaoo.cn/article/83093.htm 這篇文章,講的相當(dāng)不錯(cuò)。
3、在springboot中如何通過(guò)cors協(xié)議解決跨域問(wèn)題
springmvc4.2版本增加了對(duì)cors的支持。
目前我所做的項(xiàng)目基本都是springboot進(jìn)行開發(fā),所以我這里貼下在springboot中的使用。
@Configuration public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); }
可以在addMapping中配置我們的路徑。/**代表所有路徑。
當(dāng)然也可以修改其它屬性
@Configuration public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://192.168.1.97") .allowedMethods("GET", "POST") .allowCredentials(false).maxAge(3600); }
以上兩種,都是針對(duì)全局配置,如果你想做到更細(xì)致也可以使用@CrossOrigin這個(gè)注解在controller類中使用。
@CrossOrigin(origins = "http://192.168.1.97:8080", maxAge = 3600) @RequestMapping("rest_index") @RestController public class IndexController{
這樣就可以指定該controller中所有方法都能處理來(lái)自http:19.168.1.97:8080中的請(qǐng)求。
總結(jié)
以上所述是小編給大家介紹的springboot中如何通過(guò)cors協(xié)議解決跨域問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- SpringBoot開發(fā)技巧之如何處理跨域請(qǐng)求CORS
- Springboot處理配置CORS跨域請(qǐng)求時(shí)碰到的坑
- 基于SpringBoot解決CORS跨域的問(wèn)題(@CrossOrigin)
- Springboot處理CORS跨域請(qǐng)求的三種方法
- Springboot跨域CORS處理實(shí)現(xiàn)原理
- springboot跨域CORS處理代碼解析
- SpringBoot跨域Jsonp和Cors的方法
- 詳解springboot設(shè)置cors跨域請(qǐng)求的兩種方式
- vue+springboot實(shí)現(xiàn)項(xiàng)目的CORS跨域請(qǐng)求
- 詳解springboot解決CORS跨域的三種方式
相關(guān)文章
關(guān)于Java的HashMap多線程并發(fā)問(wèn)題分析
HashMap是采用鏈表解決Hash沖突,因?yàn)槭擎湵斫Y(jié)構(gòu),那么就很容易形成閉合的鏈路,這樣在循環(huán)的時(shí)候只要有線程對(duì)這個(gè)HashMap進(jìn)行g(shù)et操作就會(huì)產(chǎn)生死循環(huán),本文針對(duì)這個(gè)問(wèn)題進(jìn)行分析,需要的朋友可以參考下2023-05-05MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例
這篇文章主要介紹了MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01自定義Jackson的ObjectMapper如何實(shí)現(xiàn)@ResponseBody的自定義渲染
這篇文章主要介紹了自定義Jackson的ObjectMapper如何實(shí)現(xiàn)@ResponseBody的自定義渲染,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07