springsecurity 跨域
时间: 2023-08-11 19:07:18 浏览: 184
在Spring Security中处理跨域请求可以通过以下几种方式实现:
1. 使用CORS(跨域资源共享)配置:可以在Spring Security配置类中添加CorsConfigurationSource Bean,并设置允许跨域的请求来源、方法、头部等信息。示例代码如下:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable()
// 其他配置...
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.addAllowedOrigin("http://example.com");
configuration.addAllowedMethod("GET");
configuration.addAllowedHeader("Authorization");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
```
2. 自定义Filter处理跨域请求:可以创建一个自定义的Filter来处理跨域请求。示例代码如下:
```java
@Component
public class CorsFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.setHeader("Access-Control-Allow-Origin", "http://example.com");
response.setHeader("Access-Control-Allow-Methods", "GET");
response.setHeader("Access-Control-Allow-Headers", "Authorization");
filterChain.doFilter(request, response);
}
}
```
3. 使用Spring Security的CSRF保护:如果你启用了Spring Security的CSRF保护(默认情况下是启用的),则需要在跨域请求中包含CSRF令牌。可以通过在前端的请求中添加CSRF令牌,并在Spring Security的配置中禁用CSRF保护来处理跨域请求。
以上是一些处理Spring Security跨域请求的常见方法,你可以根据自己的需求选择适合的方式进行配置。
阅读全文