在spring boot security中如何配置跨域 前端8080 后端8088
时间: 2023-10-24 15:07:42 浏览: 168
springboot设置跨域访问
在Spring Boot中配置跨域,可以通过在SecurityConfig中配置CorsFilter来实现。
首先,在pom.xml文件中添加以下依赖:
```xml
<!-- Spring Boot Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
然后,在SecurityConfig中添加以下配置:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests().anyRequest().authenticated()
.and().cors().and().httpBasic();
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:8080"));
configuration.setAllowedMethods(Arrays.asList("GET","POST"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
```
上述代码中,我们首先禁用了CSRF保护,然后配置了任何请求都需要进行身份验证,接着通过cors()方法启用跨域,最后使用httpBasic()方法启用HTTP基本身份验证。
同时,我们还定义了一个corsConfigurationSource()方法,该方法返回一个CorsConfigurationSource对象,其中我们指定了允许的来源和方法。
需要注意的是,在allowedOrigins()方法中需要指定前端服务器的地址。如果允许所有来源,可以将allowedOrigins()方法调用替换为allowCredentials(true).allowedOriginPatterns("*")。
最后,需要在前端页面中发送请求时设置withCredentials属性为true,以便将Cookies发送到服务器。
```javascript
axios.defaults.withCredentials = true;
axios.get('http://localhost:8088/api/user').then(response => {
console.log(response.data);
});
```
阅读全文