赞
踩
在Web开发中,跨域是一个常见的问题。由于浏览器的同源策略,一个Web应用程序只能访问与其自身同源(即,相同协议、主机和端口)的资源。
这种策略的存在是为了保护用户的安全,防止恶意网站读取或修改用户的数据。
然而,现代Web应用程序经常需要访问不同源的资源,这就需要实现跨域。
本文将介绍在SpringBoot中实现跨域的几种方式。
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,或者涉及到两个不同域名的资源之间的交互。
由于同源策略(Same Origin Policy)的限制,浏览器不允许跨域请求。同源策略规定,A网页设置的Cookie、LocalStorage和IndexDB无法被同源以外的网页读取。
跨域请求会被浏览器拒绝。举个例子:- DOMAIN-A.com 和 DOMAIN-B.com 是两个不同的域名,它们之间的请求就是跨域请求。
我们可以在Controller的方法上直接使用@CrossOrigin注解
,如:
@CrossOrigin(origins = "http://domain1.com")
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "hello";
}
}
这种方式简单适用,但是不能应对所有的跨域请求,比较局限。
我们可以注册CorsFilter跨域过滤器,
如:
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("http://domain1.com");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
然后该过滤器会应用到所有的请求上。这种方式配置更加灵活。
我们可以在WebMvcConfigurer接口的addCorsMappings()方法中添加跨域配置,
如:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://domain1.com")
.allowedMethods("GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH")
.allowedHeaders("*")
.allowCredentials(true);
}
}
这也是一种比较常用的跨域解决方案。
以上就是我们在SpringBoot中实现跨域的几种方法。每种方法都有其适用的场景和优缺点,你应该根据你的具体需求选择合适的方法。
希望这篇文章能够帮助你解决跨域问题,提升你的Web开发能力。
如果你在实践中遇到任何问题,都可以查阅相关资料或者向社区寻求帮助。
最后,记住,成为一名优秀的Web开发者需要不断学习和实践。
感谢您的支持和鼓励!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。