下面是实现Spring Boot中跨域的5种方式的详细攻略:
1. Spring Boot官方文档提供的方式
在Spring Boot官方文档中提供了一个全局配置方式,只需要在配置文件application.properties中添加以下一行配置即可:
spring.mvc.cors.allowed-origins=*
这种方式的实现比较简单,适合跨域要求不高的项目。
2. 使用@CrossOrigin注解
在Controller的方法上使用@CrossOrigin注解即可实现跨域访问,示例如下:
@RestController
public class UserController {
@GetMapping("/users")
@CrossOrigin(origins = "*", maxAge = 3600)
public List<User> getUsers() {
//...
}
}
使用@CrossOrigin注解比较灵活,可以按照具体的需求设置允许的来源和允许的请求方式。
3. 使用WebMvcConfigurer配置类
可以通过编写WebMvcConfigurer配置类实现跨域,具体代码如下:
@Configuration
public class WebMvcConfigurer implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*");
}
}
这种方式比较灵活,可以自定义添加允许的来源、请求方式和头信息,适合需要更为细致的跨域需求。
4. 使用Filter过滤器
通过编写Filter过滤器实现跨域也比较简单,具体代码如下:
@Component
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(request, response);
}
}
可以灵活设置允许的来源、请求方式和头信息,同样适合更为细致的跨域需求。
5. 使用CorsProcessor实现
除了以上方式外,Spring Boot还提供了一种更为灵活的方式,可以通过编写自定义的CorsProcessor实现跨域访问,具体代码如下:
@Configuration
public class CorsConfig {
@Bean
public CorsProcessor corsProcessor() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowedOrigins(Collections.singletonList("*"));
config.setAllowedMethods(Arrays.asList("GET", "POST", "DELETE", "OPTIONS"));
config.setAllowedHeaders(Collections.singletonList("*"));
source.registerCorsConfiguration("/**", config);
return new DefaultCorsProcessor();
}
}
这种方式更加灵活,可以自定义实现更为细致和严格的跨域规则。
以上就是Spring Boot中实现跨域的5种方式,针对不同的需求可以选择不同的方式实现跨域。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 中实现跨域的5种方式小结 - Python技术站