跨域:当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
后端解决:
1.springboot项目
方案1:可以在相应的接口上加注解@CrossOrigin
加上注解无效解决办法
@RequestMapping注解中没有指定修改为@GetMapping
方案2:添加如下配置
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT")
.maxAge(3600);
}
}
2.springcloud
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
#这里有个allowCredentials: true这个东西是设置允许访问携带cookie的,这点一定要和前端对应!
allowCredentials: true
#可以填写多个域名用","隔开 例如:"http://www.xiaolc.cn,https://spring.io" "*"代表允许所有
allowedOrigins: "*"
allowedMethods: "*"
allowedHeaders: "*"
注:网关会和服务间的跨域配置冲突
注:前端调用加协议才可成功