跨域问题踩坑记录

问题描述

今天帮刚来公司不久的后台兄弟,部署测试环境;
刚开始,是正常的,后来前端就一直报跨域异常;
很奇怪,因为我在配置的时候,是已经把跨域配置了的,但是还是出乎意料的出现了跨域;
最后:发现:是项目代码没有启动!!!

问题分析:

因为公司使用的服务器都是自己的物理服务器;
而且测试服务器中只有一台测试服务器,做了外网映射;也就是内网穿透;
这样可以方便员工在家里也可以加班…嗯…

我们称做了内网穿透的这台测试服务器为:服务器A
称未做内网穿透的其他测试服务器中的其中一台为:服务器B
不难理解:
我们在服务器A做nginx 配置转发,就能将其他服务的请求转发到各自的服务器中;

现在,我在服务器B上,新建了一个目录,标记为其项目的目录,并让其将自己的代码部署在服务器B,然后在服务器A里配置nginx转发,就可以在外网环境通过服务器A的转发访问到服务器B;
但是问题来了:
在请求到达服务器A时:
因为服务器B的服务没开,所以在转发到服务器B时没找到,所以就报了错误,但是为什么这个错误就显示是跨域,就让我往跨域的方向找了半天,最后发现:是项目代码没有启动!!!

顺便总结一下跨域问题的常用的解决方案:

1:nginx配置cors解决

这也是我之前一直使用的解决方案:
需要在nginx配置文件中配置全局跨域即可:

server {
   …
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods ‘GET,POST’;
add_header Access-Control-Allow-Headers ‘DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization’;
}

2:java后台springBoot配置提供配置

新建配置类,并重写跨域处理接口:

@Configuration
public class CorsConfig {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            //重写父类提供的跨域请求处理的接口
            public void addCorsMappings(CorsRegistry registry) {
                //添加映射路径
                registry.addMapping("/**")
                        //放行哪些原始域
                        .allowedOrigins("*")
                        //是否发送Cookie信息
                        .allowCredentials(true)
                        //放行哪些原始域(请求方式)
                        .allowedMethods("GET", "POST")
                        //放行哪些原始域(头部信息)
                        .allowedHeaders("*");
            }
        };
    }
}

最后,服务记得启动!

你可能感兴趣的:(跨域问题踩坑记录)