您好,登錄后才能下訂單哦!
這篇文章主要介紹springboot怎么解決前后端分離時的跨域問題,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
springboot一種全新的編程規(guī)范,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,SpringBoot也是一個服務(wù)于框架的框架,服務(wù)范圍是簡化配置文件。
出于瀏覽器的同源策略限制。同源策略(Sameoriginpolicy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對同源策略的一種實現(xiàn)。同源策略會阻止一個域的javascript腳本和另外一個域的內(nèi)容進(jìn)行交互。所謂同源(即指在同一個域)就是兩個頁面具有相同的協(xié)議(protocol),主機(jī)(host)和端口號(port)
當(dāng)一個請求url的協(xié)議、域名、端口三者之間任意一個與當(dāng)前頁面url不同即為跨域
當(dāng)前頁面url | 被請求頁面url | 是否跨域 | 原因 |
---|---|---|---|
https://www.52fansite.com/ | https://www.52fansite.com/index.html | 否 | 同源(協(xié)議、域名、端口號相同) |
https://www.52fansite.com/ | http://www.52fansite.com/index.html | 是 | 協(xié)議不同(https/http) |
https://www.52fansite.com/ | https://www.baidu.com/ | 是 | 主域名不同(52fansite/baidu) |
https://www.52fansite.com/ | https://layui.52fansite.com/ | 是 | 子域名不同(www/layui) |
https://www.52fansite.com:8080/ | https://www.52fansite.com:8081/ | 是 | 同源(協(xié)議、域名、端口號相同) |
1.1類上加注解
@RestController @CrossOrigin(origins = "*") public class CorsController { @GetMapping("/cors") public String testCors() { return "success"; } }
1.2方法上加注解
@RestController public class CorsController { @CrossOrigin(origins = "*") @GetMapping("/cors") public String testCors() { return "success"; } }
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/*").allowedOrigins("*"); } }; } }
替換為
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/*").allowedOrigins("*"); } }; } }
@Configuration public class CorsConfig { @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }
以上是“springboot怎么解決前后端分離時的跨域問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。