注解@CrossOrigin具有什么功能呢?
下文笔者讲述@CrossOrigin注解的功能简介说明,如下所示:
同时为两个controller设置CrossOrigin注解
全局配置CORS
@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); } }; } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。