springboot如何解决跨域问题面试
时间: 2023-10-18 20:22:11 浏览: 84
中常被问及,可以采用以下两种方式解决跨域问题:
1.使用注解@CrossOrigin
在Controller中的方法上使用@CrossOrigin注解即可,如下所示:
```java
@CrossOrigin(origins = {"http://localhost:8080"}, maxAge = 3600)
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String doTest() {
return "success";
}
```
@CrossOrigin注解有两个参数,第一个参数为请求来源,可以是字符串数组,也可以是"*",表示接受所有来源的请求。第二个参数为缓存时间,单位为秒,指定了浏览器对该响应进行缓存的时间。
2.配置CorsFilter
在Application.java中添加CorsFilter,如下所示:
```java
@Configuration
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用
corsConfiguration.addAllowedHeader("*"); // 允许任何头
corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig()); // 对所有路径进行跨域处理
return new CorsFilter(source);
}
}
```
这里使用的是CorsFilter,将跨域处理交由Spring Boot的Filter,实现更为细致的跨域控制。配置中我们允许任何来源,任何头,任何方法的请求进行跨域处理。
阅读全文