在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。
- 全局配置:在@Configuration类中使用WebMvcConfigurer。
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.CorsRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
- @Configuration
- public class WebConfig {
- @Bean
- public WebMvcConfigurer corsConfigurer() {
- return new WebMvcConfigurer() {
- @Override
- public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**")
- .allowedOrigins("*")
- .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
- .allowedHeaders("*")
- .allowCredentials(true);
- }
- };
- }
- }
- 方法级配置:在Spring MVC的控制器方法上使用@CrossOrigin。
- import org.springframework.web.bind.annotation.CrossOrigin;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
- @RestController
- public class MyController {
- @CrossOrigin(origins = "*")
- @GetMapping("/myEndpoint")
- public String myMethod() {
- return "Hello";
- }
- }
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 转载保留版权!
标签:Origin,Control,Sharing,Java,springframework,Access,Allow,import,public From: https://www.cnblogs.com/javakji/p/17834126.html