📜  cors spring 方法或类 (1)

📅  最后修改于: 2023-12-03 14:40:13.317000             🧑  作者: Mango

CORS和Spring

CORS(跨源资源共享)是一种机制,允许Web应用程序从其他域访问其资源。而Spring则是一个开源框架,用于Java平台的企业应用程序开发。

当使用Spring构建Web应用程序时,您可能需要使用CORS来允许从其他域访问您的资源。本文将介绍如何使用Spring实现CORS。

方法1:使用 @CrossOrigin 注解

Spring提供了 @CrossOrigin 注解,可以在控制器方法上使用。该注解允许从指定的域中访问控制器方法返回的资源。以下是使用 @CrossOrigin 注解的示例:

@RestController
public class ExampleController {

    @CrossOrigin(origins = "http://example.com")
    @GetMapping("/example")
    public String example() {
        return "Hello, World!";
    }

}

在上面的示例中,我们使用 @CrossOrigin 注解将 http://example.com 添加到允许跨域请求的列表中。

方法2:使用 WebMvcConfigurer

如果您需要在整个应用程序中启用CORS,可以使用 WebMvcConfigurer。以下是添加 CORS 配置的示例:

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS")
            .allowedOrigins("*")
            .allowedHeaders("*");
    }

}

在上面的示例中,我们使用 WebMvcConfigurer 将基本配置添加到应用程序中。addCorsMappings 方法允许从任何来源访问任何路径,而 allowedMethodsallowedHeaders 允许在跨域请求中使用的 HTTP 方法和标头。

方法3:使用过滤器

您还可以使用过滤器实现 CORS。以下是使用 Spring 的 Filter 实现 CORS 的示例:

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "*");
        response.setHeader("Access-Control-Max-Age", "3600");
        chain.doFilter(req, res);
    }

}

在上面的示例中,我们使用 Filter 将基本配置添加到应用程序中,并将其标记为可以在Spring中使用的组件。

总的来说,以上三种方法都可以成功实现CORS,开发人员应该根据自身需要选择使用哪种方式,来为自己的Web应用程序添加必要的CORS支持。