解决跨域问题的后端解决方案
理解跨域,我们首先应该理解web的同源策略。
什么是同源策略?
- 它是浏览器的一个安全策略,就是限制当前源与其它源进行交互,这样就能阻隔恶意文档和减少可能被攻击的媒介。
何为同源?
- 若有两个URL,只有协议(protocol)、域名(host)、端口号(port),三者相同时,才能被称之为同源。
何为跨域访问?
- 当要在不同源之间进行数据交互时,这个过程跨域就可称之为跨域访问。
- 那我的项目举个例子(前后端分离项目,开发环境,Vue运行http://localhost:8081,后端运行http://localhost:8080)
前端登陆页面的表单数据通过Ajax提交给后端的/login接口进行处理,此时就是在跨域访问
后端解决跨域的一种方案
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 corsRegistry){
corsRegistry.addMapping("/**")//允许跨域的访问路径
.allowedOrigins("http://localhost:8081")//允许跨域访问的源
.allowedMethods("POST","GET","PUT","OPTIONS","DELETE")//允许请求方法
.allowCredentials(true)//是否允许发送cookie
.maxAge(3600)//预检的间隔时间
.allowedHeaders("*");//允许跨域访问的header
}
}