SpringBoot的跨域注解@CrossOrigin解析
方法一
(此方法maven install需jdk1.8版本+):
Spring Framework 4.2 GA為CORS提供了第一類支持,使您比通常的基于過(guò)濾器的解決方案更容易和更強(qiáng)大地配置它。所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin ;
springBoot跨域注解 : @CrossOrigin
在controller控制類上方加注解;
spring注解@CrossOrigin不起作用的原因
1、是springMVC的版本要在4.2或以上版本才支持@CrossOrigin
2、非@CrossOrigin沒有解決跨域請(qǐng)求問(wèn)題,而是不正確的請(qǐng)求導(dǎo)致無(wú)法得到預(yù)期的響應(yīng),導(dǎo)致瀏覽器端提示跨域問(wèn)題。
3、在Controller注解上方添加@CrossOrigin注解后,仍然出現(xiàn)跨域問(wèn)題,解決方案之一就是:
在@RequestMapping注解中沒有指定Get、Post方式,具體指定后,問(wèn)題解決。
類似代碼如下:
方法二
(配置類方法):
package org.richinfo.se_service_assistant.common; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; /** * 配置類,允許接口跨域訪問(wèn) * @author syw * */ @Configuration public class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); //允許任何域名 corsConfiguration.addAllowedHeader("*"); //允許任何頭 corsConfiguration.addAllowedMethod("*"); //允許任何方法 return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", buildConfig()); //注冊(cè) return new CorsFilter(source); } }
跨域測(cè)試方法
自己測(cè)試跨域的時(shí)候一致都是寫一個(gè)單獨(dú)的項(xiàng)目,用不同的端口運(yùn)行起來(lái)調(diào)自己項(xiàng)目中的接口,這樣比較麻煩
有一種簡(jiǎn)單的方法,打開瀏覽器的調(diào)試模式,在console下輸入js代碼即可
輸入以下js代碼:
沒有token驗(yàn)證的可以去掉token設(shè)置
var token= "LtSFVqKxvpS1nPARxS2lpUs2Q2IpGstidMrS8zMhNV3rT7RKnhLN6d2FFirkVEzVIeexgEHgI/PtnynGqjZlyGkJa4+zYIXxtDMoK/N+AB6wtsskYXereH3AR8kWErwIRvx+UOFveH3dgmdw1347SYjbL/ilGKX5xkoZCbfb1f0=,LZkg22zbNsUoHAgAUapeBn541X5OHUK7rLVNHsHWDM/BA4DCIP1f/3Bnu4GAElQU6cds/0fg9Li5cSPHe8pyhr1Ii/TNcUYxqHMf9bHyD6ugwOFTfvlmtp6RDopVrpG24RSjJbWy2kUOOjjk5uv6FUTmbrSTVoBEzAXYKZMM2m4=,R4QeD2psvrTr8tkBTjnnfUBw+YR4di+GToGjWYeR7qZk9hldUVLlZUsEEPWjtBpz+UURVmplIn5WM9Ge29ft5aS4oKDdPlIH8kWNIs9Y3r9TgH3MnSUTGrgayaNniY9Ji5wNZiZ9cE2CFzlxoyuZxOcSVfOxUw70ty0ukLVM/78="; var xhr = new XMLHttpRequest(); xhr.open(‘GET‘, ‘http://127.0.0.1:23802/word/selectHotWord?provinceId=100&sceneId=scene_025‘); xhr.setRequestHeader("x-access-token",token); xhr.send(null); xhr.onload = function(e) { var xhr = e.target; console.log(xhr.responseText); }
到此這篇關(guān)于SpringBoot的跨域注解@CrossOrigin解析的文章就介紹到這了,更多相關(guān)跨域注解@CrossOrigin內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java并發(fā)教程之volatile關(guān)鍵字詳解
這篇文章主要給大家介紹了關(guān)于Java并發(fā)教程之volatile關(guān)鍵字的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11springboot配置項(xiàng)目啟動(dòng)后自動(dòng)打開瀏覽器訪問(wèn)項(xiàng)目方式
這篇文章主要介紹了springboot配置項(xiàng)目啟動(dòng)后自動(dòng)打開瀏覽器訪問(wèn)項(xiàng)目方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01SpringBoot+mybatis+thymeleaf實(shí)現(xiàn)登錄功能示例
這篇文章主要介紹了SpringBoot+mybatis+thymeleaf實(shí)現(xiàn)登錄功能示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07springboot項(xiàng)目配置context path失效的問(wèn)題解決
本文主要介紹了springboot項(xiàng)目配置context path失效的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04maven父工程relativepath標(biāo)簽使用解讀
文章主要介紹了在使用Maven構(gòu)建父子工程時(shí)如何通過(guò)設(shè)置父工程和子工程的pom文件來(lái)管理依賴和版本,當(dāng)子工程是Spring Boot項(xiàng)目時(shí),可以通過(guò)關(guān)閉`relativePath`標(biāo)簽來(lái)繼承Spring Boot的父工程,同時(shí)在父工程中使用`dependencyManagement`標(biāo)簽來(lái)統(tǒng)一管理Spring Boot的依賴版本2024-11-11