WebMvcConfigurer实现跨域请求

创建了一个配置类WebMvcConfiguration,通过@Configuration注解实现WebMvcConfigurer接口,重写addCorsMappings方法来配置CORS,允许所有路由、所有请求头、所有方法的跨域请求,并允许凭证,设置缓存时间。
摘要由CSDN通过智能技术生成
  1. 添加一个配置类WebMvcConfiguration
  2. 在类上添加@Configuration注解
  3. 实现WebMvcConfigurer
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")  //配置了所有的路由都可以跨域请求
                .allowedHeaders("*")  //配置了允许发送的自定义请求头
                .allowedMethods("*")  //配置了路径下所有的请求都可以跨域请求
                .allowedOriginPatterns("*")  //解决跨域资源共享(CORS)问题的一个配置项,用于允许来自任何来源的跨域请求
                .allowCredentials(true)  //指定在跨域请求中是否允许浏览器发送包含凭证信息的请求
                .maxAge(3600);  //指定在给定的时间范围内,是否允许浏览器缓存特定资源的请求结果。
    }

}

### 回答1: WebMvcConfigurer配置跨域可以通过以下步骤实现: 1. 创建一个类并实现WebMvcConfigurer接口。 2. 重写addCorsMappings方法并在其中添加跨域配置。 3. 在跨域配置中设置允许的请求来源、请求方法和响应头信息等。 示例代码如下: @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowedHeaders("*") .allowCredentials(true) .maxAge(360); } } 以上代码中,我们设置了允许所有来源的请求,允许的请求方法包括GET、POST、PUT和DELETE,允许所有请求头信息,允许携带凭证信息,缓存时间为360秒。 在Spring Boot应用中,我们可以将该配置类注入到容器中,即可实现跨域配置。 ### 回答2: 在Web开发中,跨域是一种常见的问题,例如前端的Ajax请求可能会需要访问不同域名下的服务器,而浏览器的同源策略会限制这样的访问。为了解决跨域问题,我们需要进行一些配置。 在Spring MVC中,可以通过实现WebMvcConfigurer接口来配置跨域。其原理是在响应头中加入一些跨域相关的信息,告诉浏览器允许该请求访问,例如Access-Control-Allow-Origin、Access-Control-Allow-Methods等。下面是一个示例: ``` @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*") .allowedHeaders("*") .allowCredentials(true) .maxAge(3600); } } ``` 这段代码中,我们使用@Configuration注解将该类标记为配置类,并实现WebMvcConfigurer接口。其中addCorsMappings()方法用来添加跨域映射。在本例中,我们允许所有的来源(allowedOrigins("*")),允许所有的HTTP方法(allowedMethods("*"))和HTTP头(allowedHeaders("*")),并支持Cookie跨域(allowCredentials(true))。同时,我们将跨域缓存时间设置为3600秒(maxAge(3600))。 另外,我们还可以在Controller方法中使用@CrossOrigin注解来单独配置跨域,例如: ``` @RestController @RequestMapping("/api") @CrossOrigin(origins = "*", maxAge = 3600) public class ApiController { // ...other methods } ``` 这样,我们只需要在Controller类上添加@CrossOrigin注解即可。 总之,通过WebMvcConfigurer和@CrossOrigin注解,我们可以很方便地配置跨域,解决不同域名之间的访问问题。 ### 回答3: 跨域问题通常会在Web开发中遇到,它是指在一个网站的页面中使用不同于来源网站的资源,比如在A网站的页面中请求B网站的数据,由于浏览器的同源策略限制,这种跨域请求通常会被拒绝。在实际的开发中,我们需要配置一些参数来解决跨域问题,这里我们就以Spring MVCWebMvcConfigurer为例,来详细介绍如何配置跨域。 首先,我们需要在WebMvcConfigurer中添加一个addCorsMappings方法,该方法用于添加允许跨域请求的路径和请求方法,示例代码如下: @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("*") .allowedMethods("*") .allowedHeaders("*"); } } 其中,addMapping方法用于指定允许跨域请求的路径,上述示例中,我们指定了/api/**表示所有以/api/开头的路径都允许跨域请求;allowedOrigins方法用于指定允许跨域请求的来源,*表示任意来源都允许;allowedMethods方法用于指定允许的请求方法,*表示任意请求方法都允许;allowedHeaders方法用于指定允许的请求头信息,*表示任意请求头信息都允许。 上述配置可以让前端在任意请求方式下,都可以访问我们定义的API,但这样会带来安全风险,因为不安全的请求也被允许了。因此,在实际生产环境中,建议使用较为严格的策略,例如指定允许的来源、请求方法和请求头信息等。 除了在WebMvcConfigurer中配置跨域,还可以通过在Controller中添加@CrossOrigin注解来实现跨域请求,示例如下: @RestController @RequestMapping("/api") @CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET, RequestMethod.POST}) public class ApiController { @GetMapping("/data") public Map<String, Object> getData() { Map<String, Object> data = new HashMap<>(); data.put("name", "Tom"); data.put("age", 25); return data; } } 在上述示例中,我们通过在Controller类上添加@CrossOrigin注解来允许跨域请求,origins表示允许跨域请求的来源,allowedHeaders表示允许的请求头信息,methods表示允许的请求方法。这种方式可以单独为某个API开启跨域请求,不会对其他API造成影响。但需要注意的是,这种方式只能在Controller类上添加跨域注解,而不能在方法上添加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值