1.spring使用注解来解决跨域问题
在springboot的后端开发中,前后端分离是大势所趋,而跨域问题则是应该要解决的,话不多说,直接上代码
@CrossOrigin (value = "http://localhost:8088",
maxAge= 1800,allowedHeaders="*")
public String cos() {
return "注解跨域";
}
注解跨域的实现主要是通过 @CrossOrigin (value = "*",maxAge= 1800,allowedHeaders="*")这一行代码实现,
其中value是 表示支持的域,这里表示来自 http://localhost:8080域的请求是支持跨域的,而如果想全部支持的可以把value的值改为"*",而maxAge 表示探测请求的有效期,这个属性默认是1800秒,为三十分钟,allowedHeaders表示的是请求头,而"*"则表示所有的请求头都被允许
2.spring使用全局配置解决跨域问题
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CrosConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowCredentials(true)
.maxAge(3600)
.allowedHeaders("*");
}
}
由于使用注解来解决跨域问题会使得代码重复和繁琐,所有我推荐使用全局配置解决跨域问题,而使用全局配置也很简单,只需要自定义类实现WebMvcConfigurer 接口,然后实现接口中的 addCorsMappings 方法。
其中addMapping :表示对哪种格式的请求路径进行跨域处理;
allowedHeaders :表示通过的请求头,默认可以允许所有的请求头;
allowedMethods: 表示可行的请求方法,默认是 GET POST HEAD; 而"*"代表支持所有的请求方法;
max.Age:表示探测请求的有效期;
allowedOrigins :表示支持的域
而在实现的时候,有两个问题需要注意:
1.@Configuration要在实现的方法上面加上这个注解来让springboot启动的时候扫描到并加载
2.要把配置类放在springboot的Application相同名称的包下,不然可能会扫描不到而报错。
而spring的跨域问题这两个应该可以解决基本的使用了,看完的点个赞吧