SpringBoot 跨域配置

SpringBoot 跨域配置

SrpingBoot 配置

WebMvcConfig WebMvc配置

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

	/**
	 * CORS
	 */
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		// 所有请求都允许跨域
		// When allowCredentials is true, allowedOrigins cannot contain the special
		// value "*"since that cannot be set on the "Access-Control-Allow-Origin"
		// response header. To allow credentials to a set of origins, list them
		// explicitly or consider using "allowedOriginPatterns" instead
		registry.addMapping("/**").allowCredentials(true).allowedOriginPatterns("*").allowedMethods("*")
				.allowedHeaders("*").maxAge(3600L);
	}

}

FilterConfig 过滤器配置

@Configuration
public class FilterConfig {

	// 第一种形式
	@Bean
	public FilterRegistrationBean<CorsFilter> corsFilter() {
		// CORS配置信息
		CorsConfiguration corsConfiguration = new CorsConfiguration();
		// 允许的域 addAllowedOrigin 若为 * cookie无法使用,可使用 addAllowedOriginPattern 代替
		// corsConfiguration.addAllowedOrigin("*");
		// corsConfiguration.addAllowedOrigin("http://localhost:8080");
		corsConfiguration.addAllowedOriginPattern("*");
		// 是否发送Cookie信息
		corsConfiguration.setAllowCredentials(true);
		// 允许的请求方式
		corsConfiguration.addAllowedMethod("*");
		// corsConfiguration.addAllowedMethod("OPTIONS");
		// corsConfiguration.addAllowedMethod("HEAD");
		// corsConfiguration.addAllowedMethod("GET");
		// corsConfiguration.addAllowedMethod("PUT");
		// corsConfiguration.addAllowedMethod("POST");
		// corsConfiguration.addAllowedMethod("DELETE");
		// corsConfiguration.addAllowedMethod("PATCH");
		corsConfiguration.setMaxAge(3600L);
		// 允许的头信息
		corsConfiguration.addAllowedHeader("*");
		// 添加映射路径,拦截所有请求
		UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
		configSource.registerCorsConfiguration("/**", corsConfiguration);
		return new FilterRegistrationBean<>(new CorsFilter(configSource));
	}

	// 第二种形式
	// @Bean
	// public CorsFilter corsFilter() {
	// 	// CORS配置信息
	// 	CorsConfiguration corsConfiguration = new CorsConfiguration();
	// 	// 允许的域 addAllowedOrigin 若为 * cookie无法使用,可使用 addAllowedOriginPattern 代替
	// 	// corsConfiguration.addAllowedOrigin("*");
	// 	// corsConfiguration.addAllowedOrigin("http://localhost:8080");
	// 	corsConfiguration.addAllowedOriginPattern("*");
	// 	// 是否发送Cookie信息
	// 	corsConfiguration.setAllowCredentials(true);
	// 	// 允许的请求方式
	// 	corsConfiguration.addAllowedMethod("*");
	// 	// corsConfiguration.addAllowedMethod("OPTIONS");
	// 	// corsConfiguration.addAllowedMethod("HEAD");
	// 	// corsConfiguration.addAllowedMethod("GET");
	// 	// corsConfiguration.addAllowedMethod("PUT");
	// 	// corsConfiguration.addAllowedMethod("POST");
	// 	// corsConfiguration.addAllowedMethod("DELETE");
	// 	// corsConfiguration.addAllowedMethod("PATCH");
	// 	corsConfiguration.setMaxAge(3600L);
	// 	// 允许的头信息
	// 	corsConfiguration.addAllowedHeader("*");
	// 	// 添加映射路径,拦截所有请求
	// 	UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
	// 	configSource.registerCorsConfiguration("/**", corsConfiguration);
	// 	return new CorsFilter(source);
	// }

}

Annotation 注解

使用 @CrossOrigin

WebSocket STOMP Config WebSocket STOMP 配置

当 allowCredentials 为 true 时,allowedOrigins不可以包含 “*”,又因为不可以设置 allowedOriginPatterns,因此 AllowedOrigins 需要指定具体 协议、域名、端口。如:http://localhost:8080

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

	/**
	 * 配置Stomp端点
	 * 
	 * @param registry
	 */
	@Override
	protected void configureStompEndpoints(StompEndpointRegistry registry) {
		// HTTP URL 端点 用于WebSocket客户端连接到WebSocket handshake
		registry.addEndpoint(WebSocketConstant.STOMP_ENDPOINTS)
				// allowCredentials 为 true 时,allowedOrigins不可以包含 "*"
				// .setAllowedOrigins("*")
				.setAllowedOrigins("http://localhost:8080")
				// 有 连接时使用http(s) 没有 连接时使用ws(s)
				.withSockJS();
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值