1.使用@CrossOrigin
1.接口上使用:
@CrossOrigin(origins = {"http://localhost:9000", "null"})
@Mapping("/test")
public String greetings() {
return "hello world ~";
}
2.类上使用:
@CrossOrigin(origins = {"http://localhost:9000", "null"})
@RestController
public class SpringBootCorsController {
····
}
2.使用拦截器
@Component
public class CrossFilter implements Filter {
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", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Allow-Headers", "Content-Type,user-token");
response.setHeader("Access-Control-Expose-Headers", "*");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {
}
public void destroy() {
}
}
3.全局配置
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
.maxAge(3600)
.allowCredentials(true);
}
}