日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot 添加允许跨域_springboot设置cors跨域请求的两种方式

發布時間:2024/9/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot 添加允许跨域_springboot设置cors跨域请求的两种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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);

// 設置你要允許的網站域名,如果全允許則設為 *

config.addAllowedOrigin("http://localhost:4200");

// 如果要限制 HEADER 或 METHOD 請自行更改

config.addAllowedHeader("*");

config.addAllowedMethod("*");

source.registerCorsConfiguration("/**", config);

FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));

// 這個順序很重要哦,為避免麻煩請設置在最前

bean.setOrder(0);

return bean;

}

}

參考:

更新 2020-7-8

由于使用了springboot 2.2.5.RELEASE和springcloud Hoxton.SR4,導致跨域寫法有所變化,現更新如下:

@EnableWebSecurity

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override

protected void configure(HttpSecurity http) throws Exception {

http

// by default uses a Bean by the name of corsConfigurationSource

.cors().and()

...

}

@Bean

public CorsFilter corsFilter() {

CorsConfiguration configuration = new CorsConfiguration();

configuration.setAllowedOrigins(Arrays.asList("*"));

configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));

configuration.setAllowedHeaders(Arrays.asList("authorization", "content-type", "x-auth-token"));

configuration.setExposedHeaders(Arrays.asList("x-auth-token"));

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

source.registerCorsConfiguration("/**", configuration);

return new CorsFilter(source);

}

}

或者

@Configuration

public class CorsConfig{

private CorsConfiguration buildConfig() {

CorsConfiguration corsConfiguration = new CorsConfiguration();

corsConfiguration.addAllowedOrigin("*");

corsConfiguration.addAllowedHeader("*");

corsConfiguration.addAllowedMethod("*");

corsConfiguration.setAllowCredentials(true);

return corsConfiguration;

}

@Bean

public CorsFilter corsFilter() {

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

source.registerCorsConfiguration("/**", buildConfig());

return new CorsFilter(source);

}

}

總結

不能把上面的方法CorsFilter corsFilter()改成CorsConfigurationSource corsConfigurationSource(),因為我試了不起作用,提醒一下各位

我試了網上好多人的方法,但是只有上面的才起作用,分享給大家

參考:

總結

以上是生活随笔為你收集整理的springboot 添加允许跨域_springboot设置cors跨域请求的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。