转自:
http://www.java265.com/JavaFramework/Spring/202205/3454.html
下文笔者讲述@CrossOrigin注解的功能简介说明,如下所示:
@CrossOrigin注解的功能: 禁止Ajax访问当前站点外的资源 如:禁止在另一个站点使用ajax访问你的站点
CORS简介
CORS: 全称\"跨域资源共享\"(Cross-origin resource sharing) CORS:需要浏览器和服务器同时支持,才可以实现跨域请求 目前几乎所有浏览器都支持CORS,IE则不能低于IE10 CORS的整个过程都由浏览器自动完成,前端无需做任何设置,跟平时发送ajax请求并无差异 实现CORS的关键在于服务器,只要服务器实现CORS接口,就可以实现跨域通信 请求类型: CORS分为简单请求和非简单请求(需预检请求)两类
跨域(CORS)支持
Spring Framework 4.2 GA为CORS提供了第一类支持 使您比通常的基于过滤器的解决方案更容易和更强大地配置它 所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin
使用方法简介说明
controller中配置CORS
我们可在@RequestMapping注解的上面添加一个@CrossOrigin注解 则可启用CORS(默认情况下,@CrossOrigin允许在@RequestMapping注解中指定的所有源和HTTP方法)
例:
@RestController public class TestController { @CrossOrigin @PostMapping(\"/test/addRecord\") public CommonResult<Integer> add(@RequestBody TestController oneRecord) { // ... } @GetMapping(\"/test/checkRecord\") public CommonResult<TestController> checkRecord(@RequestParam Integer recordId) { // ... } }
我们还可以在CrossOrigin中添加两个参数 origins:允许可访问的域列表 maxAge:准备响应前的缓存持续的最大时间(以秒为单位)
例:
@CrossOrigin(origins = \"http://127.0.0.1:8888/api/\", maxAge = 3600) @RestController public class TestController { @PostMapping(\"/test/oneRecord\") public CommonResult<Integer> add(@RequestBody TestRecord oneRecord) { // ... } }
同时为两个controller设置CrossOrigin注解
@CrossOrigin(maxAge = 3600) @RestController @RequestMapping(\"/account\") public class TestController { @CrossOrigin(origins = \"http://127.0.0.1:8888/api/\") @PostMapping(\"/test/addRecord\") public CommonResult<Integer> add(@RequestBody TestRecord oneRecord) { // ... } @GetMapping(\"/test/checkRecord\") public CommonResult<TestRecord> checkRecord(@RequestParam Integer id) { // ... } }
全局配置CORS
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(\"/**\"); } }
spring boot配置cors
/** * 跨域配置 */ @Configuration public class CorsConfig implements WebMvcConfigurer { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(\"/**\"). allowedOrigins(\"http://www.java265.com\"). //允许跨域的域名,可以用*表示允许任何域名使用 allowedMethods(\"*\"). //允许任何方法(post、get等) allowedHeaders(\"*\"). //允许任何请求头 allowCredentials(true). //带上cookie信息 //maxAge(3600)表明在3600秒内,不需要再发送预检验请求,可以缓存该结果 exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L); } }; } }
来源:https://www.cnblogs.com/java265/p/16350031.html
本站部分图文来源于网络,如有侵权请联系删除。