您可以通过将 Access-Control-Allow-Origin 字段中允许的 URL 添加到标头来添加自定义 CORSFilter 和重新字符串请求的来源。下面是如何实现这一点 -
public class CORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
System.out.println("Filtering on...........................................................");
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "permitted URL here");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Authorization, Origin, Accept, Access-Control-Request-Method, Access-Control-Request-Headers");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
您可以根据需要修改此过滤器。
编辑
上述方法并不完全安全,因为入侵者可能会破坏标头值。最好的解决方案是使用基于令牌的身份验证。 JWT 是这里的最佳选择之一。