百木园-与人分享,
就是让自己快乐。

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

转自:

 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
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 注解@CrossOrigin具有什么功能呢?

相关推荐

  • 暂无文章