原文地址:https://xeblog.cn/articles/12
引言
前后端分离的项目虽然降低了耦合度,但是引发的各种问题也随之而来。后端项目由Tomcat部署(监听8080端口),前端项目则部署在Nginx上(监听80、443等非8080端口),前端页面加载速度大大提高了,而当ajax请求后端接口的时候却报错了。
同源策略
同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。
前端地址:
http://127.0.0.1:63344
后端地址:
http://127.0.0.1:8080
这两个地址虽然ip地址和协议都一样,但是端口不一样,所以并不满足同源,这样就造成了跨域的问题。
解决方案
配置addCorsMappings
新增一个类实现 WebMvcConfigurer
接口,然后给这个类加上 @Configuration
注解,最后实现 addCorsMappings
方法就ok了。
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
.maxAge(3600)
.allowCredentials(true);