国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

spring cloud實(shí)現(xiàn)前端跨域問題的解決方案

2024-07-13 10:17:00
字體:
供稿:網(wǎng)友

當(dāng)我們需要將spring boot以restful接口的方式對(duì)外提供服務(wù)的時(shí)候,如果此時(shí)架構(gòu)是前后端分離的,那么就會(huì)涉及到跨域的問題,那怎么來解決跨域的問題了,下面就來探討下這個(gè)問題。

解決方案一:在Controller上添加@CrossOrigin注解

使用方式如下:

@CrossOrigin // 注解方式 @RestController public class HandlerScanController {         @CrossOrigin(allowCredentials="true", allowedHeaders="*", methods={RequestMethod.GET,       RequestMethod.POST, RequestMethod.DELETE, RequestMethod.OPTIONS,       RequestMethod.HEAD, RequestMethod.PUT, RequestMethod.PATCH}, origins="*")   @PostMapping("/confirm")   public Response handler(@RequestBody Request json){          return null;   } } 

解決方案二:全局配置

代碼如下:

@Configuration   public class MyConfiguration {      @Bean     public WebMvcConfigurer corsConfigurer() {       return new WebMvcConfigurerAdapter() {         @Override         public void addCorsMappings(CorsRegistry registry) {           registry.addMapping("/**")           .allowCredentials(true)           .allowedMethods("GET");         }       };     }   } 

解決方案三:結(jié)合Filter使用

在spring boot的主類中,增加一個(gè)CorsFilter 

/**    *    * attention:簡單跨域就是GET,HEAD和POST請(qǐng)求,但是POST請(qǐng)求的"Content-Type"只能是application/x-www-form-urlencoded, multipart/form-data 或 text/plain    * 反之,就是非簡單跨域,此跨域有一個(gè)預(yù)檢機(jī)制,說直白點(diǎn),就是會(huì)發(fā)兩次請(qǐng)求,一次OPTIONS請(qǐng)求,一次真正的請(qǐng)求    */   @Bean   public CorsFilter corsFilter() {     final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();     final CorsConfiguration config = new CorsConfiguration();     config.setAllowCredentials(true); // 允許cookies跨域     config.addAllowedOrigin("*");// #允許向該服務(wù)器提交請(qǐng)求的URI,*表示全部允許,在SpringMVC中,如果設(shè)成*,會(huì)自動(dòng)轉(zhuǎn)成當(dāng)前請(qǐng)求頭中的Origin     config.addAllowedHeader("*");// #允許訪問的頭信息,*表示全部     config.setMaxAge(18000L);// 預(yù)檢請(qǐng)求的緩存時(shí)間(秒),即在這個(gè)時(shí)間段里,對(duì)于相同的跨域請(qǐng)求不會(huì)再預(yù)檢了     config.addAllowedMethod("OPTIONS");// 允許提交請(qǐng)求的方法,*表示全部允許     config.addAllowedMethod("HEAD");     config.addAllowedMethod("GET");// 允許Get的請(qǐng)求方法     config.addAllowedMethod("PUT");     config.addAllowedMethod("POST");     config.addAllowedMethod("DELETE");     config.addAllowedMethod("PATCH");     source.registerCorsConfiguration("/**", config);     return new CorsFilter(source);   } 

當(dāng)然,如果微服務(wù)多的話,需要在每個(gè)服務(wù)的主類上都加上這么段代碼,這違反了DRY原則,更好的做法是在zuul的網(wǎng)關(guān)層解決跨域問題,一勞永逸。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 诸暨市| 慈溪市| 乌拉特前旗| 元朗区| 宾阳县| 台安县| 攀枝花市| 进贤县| 衡东县| 西充县| 佛山市| 嘉善县| 凌云县| 永新县| 赫章县| 寿光市| 大邑县| 南昌市| 东丽区| 陵川县| 漳浦县| 福安市| 玉田县| 沐川县| 赣州市| 车险| 泽普县| 盐亭县| 故城县| 邹平县| 静乐县| 固原市| 明光市| 东安县| 积石山| 江西省| 广南县| 会同县| 通海县| 巴林左旗| 贡觉县|