使用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应用程序的安全性和可访问性。