版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21870555/article/details/82809975
什么是跨域:
- 协议、端口号、域名 都相同才是同一个域
- 只要有一个不同就算是跨域
- 主域名相同,子域名不同也算跨域
email.qq.com和zone.qq.com就属于主域相同,子域不同,也算是跨域
需要注意的是:协议不同(eg:https和http)或者端口号不同造成的跨域,前端是无法解决的
1.我所遇到的跨域问题说明:端口号不同。
2.由于我们做的项目采用的是SpringCloud,使用了zuul网关来管理所有的请求,zuul默认会过滤掉cookie等header信息
解决办法
在zuul项目的application.properties文件中添加 zuul.sensitive-headers= (此处值不填为空)
加入Cors的跨域,继承WebMvcConfigurerAdapter类 重写addCorsMappings方法
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 WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "OPTIONS", "PUT")
.allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method",
"Access-Control-Request-Headers")
.exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")
.allowCredentials(true).maxAge(3600);
}
}