📅  最后修改于: 2023-12-03 14:47:33.410000             🧑  作者: Mango
Spring CORS(跨来源资源共享)是一个Spring Framework中的功能,用于处理跨域资源共享问题。跨域资源共享是指在浏览器中,一个源(域)的网页向另一个源(域)的服务器发送请求,从而实现跨域通信。在默认情况下,浏览器会阻止此类跨域请求,因为这可能引发安全风险。
Spring CORS提供了一种方式来配置跨域请求的规则,以允许特定的源发出跨域请求。通过使用Spring CORS,您可以在Spring应用程序中配置允许的源、允许的HTTP方法、允许的请求头等。
要启用Spring CORS功能,您需要完成以下步骤:
@EnableWebMvc
注解,以启用Spring MVC框架。WebMvcConfigurer
接口的配置类,并覆盖addCorsMappings
方法。在该方法中,您可以配置允许的源、允许的HTTP方法、允许的请求头等。下面是一个示例配置类的代码片段:
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://example.com")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("Authorization", "Content-Type")
.exposedHeaders("Custom-Header")
.allowCredentials(true)
.maxAge(3600);
}
}
在上面的代码中,我们配置了允许的源为http://example.com
,允许的HTTP方法为GET、POST、PUT和DELETE,允许的请求头为Authorization和Content-Type。我们还设置了允许携带凭证(如cookie、HTTP认证等),并设置了响应中可暴露的自定义头Custom-Header。最后,我们还设置了CORS预检请求的最大缓存时间为3600秒。
假设我们有一个Spring RESTful API,它提供了一些用于访问资源的端点。我们希望允许http://example.com
这个域的网页从API端点发送请求。
首先,我们创建一个简单的Spring MVC控制器类,如下所示:
@RestController
public class ApiController {
@GetMapping("/api/users")
public List<User> getUsers() {
// 返回用户列表
}
@PostMapping("/api/users")
public void createUser(@RequestBody User user) {
// 创建新用户
}
}
然后,我们需要将之前的CorsConfig
类添加到我们的Spring应用程序中。您可以通过将其作为一个bean添加到主配置类中,或者在扫描的包中进行组件扫描来实现。
现在,当http://example.com
的网页向/api/users
发送GET或POST请求时,它们将被允许通过浏览器的CORS策略。
Spring CORS是一个强大的功能,用于处理跨域资源共享问题。通过配置允许的源、允许的HTTP方法和请求头,您可以控制允许跨域通信的规则。
以上是关于Spring CORS的简介及配置示例,希望对您有所帮助。
参考文档:Spring CORS