跨域是什么?浏览器不能执行其他网站的脚本,由浏览器的同源策略造成的,是浏览器对js施加的去安全限制。
    同源策略是什么?协议、域名、端口,其中一个不一样都会产生跨域。
    跨域流程是什么?1.预检请求,OPTIONS
    2.响应允许跨域
    3.发送真实请求
    4.响应数据
    跨域的根本原因是目标网站和发送请求的网站不在同一个域。
    解决跨域:有个nginx服务器,将前端项目部署在nginx中,不同的网关也让nginx代理过来。
    要访问前端项目就不访问前端地址了,直接访问nginx,要是静态资源,默认代理给前端项目,要是动态请求(路径包含api),还是先发给nginx,一看有api,转给网关,也就是反向代理给我们的网关,再转到其他服务
    (1)使用nginx部署为同一域.()
    (1.1)静态请求直接访问前端,动态请求转给(反向代理)getway(网关),网关再转到其他服务.
    image.png
    (2)配置当次请求允许跨域(在网关里统一配置跨域)
    image.png
    (2.1)代码如下:
    @Configuration
    public class GulimallCorsConfiguration {
    public CorsWebFilter corsWebFilter(){
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration();
    //1、配置跨域
    corsConfiguration.addAllowedHeader(““); //允许访问的头信息,表示全部
    corsConfiguration.addAllowedMethod(““); //允许提交请求的方法,表示全部允许
    corsConfiguration.addAllowedOrigin(““); //允许向该服务器提交请求的URI,表示全部允许
    corsConfiguration.setAllowCredentials(true);// 允许cookies跨域
    source.registerCorsConfiguration(“/**”,corsConfiguration);
    return new CorsWebFilter(source); }
    }