注解@CrossOrigin具有什么功能呢?

杨幂 Spring 2022-05-22 22:15:09 9469 1
下文笔者讲述@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); 
            }
        };
    }
}

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: http://www.Java265.com/JavaFramework/Spring/202205/3454.html

最近发表

热门文章

好文推荐

Java265.com

//www.java265.com

站长统计|USA-001

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

Honor accompaniments