WebMvcConfigurer是SpringMVC框架提供的一个配置接口,通过它我们可以修改SpringMVC底层的行为,比如拦截器、消息转换器、静态资源处理等。在此基础上,我们也可以用WebMvcConfigurer来实现跨域资源共享(CORS)的配置。
所谓跨域资源共享,就是在一个域名下的网页去请求另一个域名下的资源,这个请求是跨域请求。浏览器禁止跨域请求,所以需要通过一些方式来解决这个问题。使用CORS是最常见的方式之一。
WebMvcConfigurer提供了addCorsMappings方法,来实现CORS的配置。下面是一个简单的例子:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
}
以上代码配置了所有的路由都可以跨域请求,allowedOrigins方法接受一个String数组,指定允许请求的域名,如果传入’*'则表示对所有域名允许请求。
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://localhost:8080")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
}
}
以上代码配置了/api路径下所有的请求都可以跨域请求,允许的方法包括GET、POST、PUT、DELETE和OPTIONS。
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://localhost:8080")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("Authorization", "Content-Type", "Accept")
}
}
以上代码配置了允许发送的自定义请求头,包括Authorization、Content-Type和Accept。
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://localhost:8080")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("Authorization", "Content-Type", "Accept")
.exposedHeaders("Authorization")
}
}
以上代码配置了将Authorization响应头暴露给客户端。如果不指定exposedHeaders,默认情况下不会将响应头暴露给客户端。
通过WebMvcConfigurer配置跨域可以很方便地将CORS配置到SpringMVC应用中。在实际开发中,应该根据实际情况来灵活配置,以保障数据的安全性。
转载文章https://www.python100.com/html/BZX1V61K2C59.html