springboot配置跨域
一、 文件名:
CORSFilter
直接代码:
import javax.servlet.Filter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(filterName = "CORSFilter", urlPatterns = {"/*"})
public class CORSFilter implements Filter {
@Override
public void destroy() {
System.out.println("CORS FILTER IS DESTROYED!");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
this.addHeaders(resp);
if (req.getMethod().equals("OPTIONS")) {
resp.setStatus(HttpServletResponse.SC_OK);
resp.addHeader("Access-Control-Max-Age", "600");
return;
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("CORS FILTER IS INITED!");
}
public static void addHeaders(HttpServletResponse response) {
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Headers", "Origin, x-requested-with, Content-Type, Accept,X-Cookie, Authorization");
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Methods", "GET,POST,PUT,OPTIONS,DELETE");
}
}
二、启动类配置注解
@ServletComponentScan(value = {"com.example.demo.filter"})
com.example.demo.filter为包名,需要根据自己的需要修改

本文详细介绍如何在SpringBoot项目中实现跨域访问,通过自定义CORSFilter类及启动类注解完成配置,同时提供使用nginx进行跨域处理的替代方案。

230

被折叠的 条评论
为什么被折叠?



