Spring Cloud 轻松解决跨域,别再乱用了
在Spring Cloud项目中,跨域问题通常可以通过以下方式解决:
- 使用Spring Boot提供的
@CrossOrigin
注解。
@CrossOrigin(origins = "http://localhost:8081")
@RestController
public class MyController {
// ...
}
- 配置全局跨域处理。
在Spring Boot的配置文件(如application.properties或application.yml)中添加以下配置:
# application.properties
spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
# 允许跨域的域,* 表示允许任何域
spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
或者使用Java配置类:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8081")
.allowedMethods("GET", "POST", "PUT", "DELETE");
}
}
- 使用Filter配置跨域。
创建一个CORS filter并注册到Spring Boot应用中:
@Component
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
res.addHeader("Access-Control-Allow-Origin", "http://localhost:8081");
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
res.addHeader("Access-Control-Allow-Headers", "Content-Type");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) {}
@Override
public void destroy() {}
}
以上方法可以有效解决Spring Cloud项目中的跨域问题,不过在实际应用中,应根据具体需求选择合适的方法,并适当配置允许跨域的域和方法。
评论已关闭