詳解springboot設(shè)置cors跨域請(qǐng)求的兩種方式
更新時(shí)間:2018年11月14日 14:07:28 作者:Awbeci
這篇文章主要介紹了詳解springboot設(shè)置cors跨域請(qǐng)求的兩種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
1、第一種:
public class CorsFilter extends OncePerRequestFilter {
static final String ORIGIN = "Origin";
protected void doFilterInternal(
HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
String origin = request.getHeader(ORIGIN);
response.setHeader("Access-Control-Allow-Origin", "*");//* or origin as u prefer
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "PUT, POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "content-type, authorization");
if (request.getMethod().equals("OPTIONS"))
response.setStatus(HttpServletResponse.SC_OK);
else
filterChain.doFilter(request, response);
}
}
@Bean
public CorsFilter corsFilter() throws Exception {
return new CorsFilter();
}
http
.addFilterBefore(corsFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class)
.headers()
.cacheControl();
2、第二種:
@Configuration
public class CorsConfig {
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// 設(shè)置你要允許的網(wǎng)站域名,如果全允許則設(shè)為 *
config.addAllowedOrigin("http://localhost:4200");
// 如果要限制 HEADER 或 METHOD 請(qǐng)自行更改
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
// 這個(gè)順序很重要哦,為避免麻煩請(qǐng)?jiān)O(shè)置在最前
bean.setOrder(0);
return bean;
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
學(xué)習(xí)Java之IO流中有哪些復(fù)雜的API
這篇文章我們要先對(duì)IO流的API有個(gè)基本的認(rèn)知,因?yàn)镮O流的類(lèi)和方法太多了,我們不得不專(zhuān)門(mén)學(xué)習(xí)一下,所以本文就給大家詳細(xì)的講講Java?IO流中復(fù)雜的API,需要的朋友可以參考下2023-09-09
IDEA如何修改maven的JVM啟動(dòng)內(nèi)存參數(shù)
這篇文章主要介紹了IDEA如何修改maven的JVM啟動(dòng)內(nèi)存參數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
SpringBoot+MDC實(shí)現(xiàn)鏈路調(diào)用日志的方法
MDC是 log4j 、logback及l(fā)og4j2 提供的一種方便在多線(xiàn)程條件下記錄日志的功能,這篇文章主要介紹了SpringBoot+MDC實(shí)現(xiàn)鏈路調(diào)用日志,需要的朋友可以參考下2022-12-12
SpringBoot多模塊打包部署Docker的項(xiàng)目實(shí)戰(zhàn)
本文通過(guò)介紹最常見(jiàn)的Maven管理的Spring Boot項(xiàng)目多模塊打包部署Docker來(lái)介紹一下項(xiàng)目部署過(guò)程中操作流程和幾個(gè)需要注意的點(diǎn),具有一定的參加價(jià)值,感興趣的可以了解一下2023-08-08
java WSDL接口webService實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了java WSDL接口webService實(shí)現(xiàn)方式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
如何使用IDEA開(kāi)發(fā)Spark SQL程序(一文搞懂)
Spark SQL 是一個(gè)用來(lái)處理結(jié)構(gòu)化數(shù)據(jù)的spark組件。它提供了一個(gè)叫做DataFrames的可編程抽象數(shù)據(jù)模型,并且可被視為一個(gè)分布式的SQL查詢(xún)引擎。這篇文章主要介紹了如何使用IDEA開(kāi)發(fā)Spark SQL程序(一文搞懂),需要的朋友可以參考下2021-08-08

