在Java中实现跨域(Cross-Origin Resource Sharing, CORS)主要涉及到在服务器端设置HTTP响应头,以允许来自不同源的客户端请求。下面是一些常用的方法来实现跨域:
1. Servlet过滤器
你可以创建一个过滤器(Filter)来添加必要的HTTP头。这种方法适用于所有基于Servlet的应用程序,如纯Servlet应用、Spring MVC等。
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class CORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
2. Spring Boot
如果你使用Spring Boot,可以通过配置来启用CORS。
3. Java EE (JAX-RS)
在Java EE环境下,如果使用JAX-RS(如Jersey或Resteasy),你可以在你的资源类或方法上使用@Cors注解。
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
@Path("/myResource")
public class MyResource {
@GET
public Response myMethod() {
return Response
.ok("Hello")
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
.build();
}
}
以上方法中,可以根据实际需求调整允许的源(Access-Control-Allow-Origin)、方法(Access-Control-Allow-Methods)和头(Access-Control-Allow-Headers)等。
作者:http://www.xkrj5.com 转载保留版权!