使用Spring Boot实现跨域资源共享(CORS)
1. CORS概述
跨域资源共享(CORS)是一种机制,允许Web应用程序从不同的域访问其资源。在开发Web应用时,经常需要处理跨域请求,例如从前端应用(如JavaScript)向后端API发送请求。Spring Boot提供了简单而强大的方式来配置CORS策略,以便安全地处理跨域请求。
2. 使用Spring Boot配置CORS
在Spring Boot中配置CORS可以通过WebMvcConfigurer
接口来实现。下面是一个示例,演示如何配置全局CORS策略。
2.1 创建配置类
package cn.juwatech.config;
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 CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8080") // 允许的源,可以设置为具体的域名或IP及端口号
.allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的HTTP方法
.allowedHeaders("*") // 允许的请求头
.allowCredentials(true) // 是否支持发送Cookie
.maxAge(3600); // 预检请求的有效期,单位秒
}
}
2.2 配置说明
allowedOrigins
:指定允许访问的源,可以是具体的域名(如http://localhost:8080
)或*
(表示允许任意源)。allowedMethods
:指定允许的HTTP方法,如GET、POST等。allowedHeaders
:指定允许的请求头,*
表示允许所有请求头。allowCredentials
:指定是否支持发送Cookie,如果需要支持跨域的Session,则需要设置为true。maxAge
:设置预检请求(OPTIONS请求)的有效期,单位为秒。
3. 在Controller中使用CORS
除了全局配置外,还可以在单个Controller或方法级别配置CORS。下面是一个示例:
package cn.juwatech.controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin(origins = "http://localhost:8080")
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, CORS!";
}
}
在上面的示例中,@CrossOrigin
注解指定了允许访问的源,这会覆盖全局配置中的设置。
4. 测试CORS设置
为了测试CORS设置是否生效,可以使用浏览器的开发者工具或者Postman等工具发送跨域请求。确保请求的来源、方法、请求头等与配置一致,以验证CORS策略是否按预期工作。
5. 总结
通过本文,你学习了如何在Spring Boot中实现跨域资源共享(CORS)。通过配置全局策略或在Controller级别使用@CrossOrigin
注解,可以轻松地管理跨域请求,确保Web应用程序的安全性和可访问性。