一、跨域产生的原因
浏览器的同源策略:
-
是浏览器上为安全性考虑实施的非常重要的安全策略,即从一个域上加载的脚本不允许访问另外一个域的文档属性。
-
所谓同源:URL是由协议、域名、端口和路径组成的,如果两个URL的协议、域名和端口是相同,那么就是同源的。
不允许发起跨域访问不是浏览器限制了发起跨站请求,而是发起跨域请求后,返回的结果被浏览器拦截了。
二、跨域解决方法
1、使用@CrossOrigin注解,在类或者方法上添加注解,而不需要配置
@CrossOrigin
@RestController
@RequestMapping("test")
public class TestController {
@CrossOrigin
@RequestMapping
public Result test(){
return Result.success(null);
}
}
2、实现WebMvcConfigurer接口
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 CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
// 设置允许跨域的路径
registry.addMapping("/**")
// 设置允许跨域请求的域名
.allowedOriginPatterns("*")
// 是否允许cookie
.allowCredentials(true)
// 设置允许的请求方式
.allowedMethods("GET", "POST", "DELETE", "PUT")
// 设置允许的header属性
.allowedHeaders("*")
// 跨域允许时间
.maxAge(3600);
}
}