SpringBoot 跨域资源共享
https://juejin.cn/post/7053753080176705573#heading-11
通过 Filter 过滤器手动设置响应头
@Component
@Slf4j
@WebFilter(urlPatterns = {"/*"}, filterName = "corsFilter")
public class CorsFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("启动跨域过滤器");
}
@Override
public void doFilter(ServletRequest request, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
// 手动设置响应头解决跨域访问
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
// 设置过期时间
response.setHeader("Access-Control-Max-Age", "86400");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, uuid");
// 支持 HTTP 1.1
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
// 支持 HTTP 1.0. response.setHeader("Expires", "0");
response.setHeader("Pragma", "no-cache");
// 编码
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, resp);
}
@Override
public void destroy() {
log.info("销毁跨域过滤器");
}
}
使用@CrossOrigin注解(局部跨域)
实现WebMvcConfigurer
注入CORSFilter过滤器
最后更新于