后端跨域配置config
时间: 2025-02-13 18:17:35 浏览: 32
### 后端跨域配置方法
#### 使用 `@CrossOrigin` 注解实现局部跨域
对于简单的应用场景,可以在控制器类或特定的方法上使用 `@CrossOrigin` 注解来允许来自指定源的请求。这种方式适用于小型项目或是只需要部分接口支持跨域的情况。
```java
@RestController
@CrossOrigin(origins = "http://localhost:9133") // 允许来自 http://localhost:9133 的请求
public class MyController {
@GetMapping("/api/data")
public String getData() {
return "Data from backend";
}
}
```
该方式简单易用,但是当项目规模较大时,维护成本较高[^2]。
#### 基于过滤器全局处理跨域问题
为了更灵活地管理跨域设置并减少重复代码,在大型应用程序中推荐通过自定义过滤器的方式来进行全局性的跨域配置。下面是一个基于 Spring Boot 实现的例子:
```java
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CorsConfig {
private static final long MAX_AGE_SECS = 3600L;
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
```
这段代码创建了一个名为 `corsFilter()` 的 Bean 来注册 CORS 过滤器,并设置了允许凭证共享 (`setAllowCredentials`)、通配符匹配所有来源(`addAllowedOrigin("*")`)以及其他必要的参数[^4]。
#### 利用 WebMvcConfigurer 接口定制化配置
另一种常见的做法是在Spring框架下利用 `WebMvcConfigurer` 接口完成更加细致化的CORS策略设定:
```java
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:9133")
.allowCredentials(true)
.maxAge(MAX_AGE_SECS);
}
}
```
这里同样实现了对所有路径下的资源开放给前端地址为 `http://localhost:9133` 的客户端访问权限。
阅读全文
相关推荐


















