协议、域名、端口不全部相同

    AJAX属于同源策略,用的AJAX,所以导致前端网页请求后端接口的时候提示跨域报错

    解决方法
    利用反向代理服务器,如nginx
    服务端支持跨域

    1.Spring使用@CrossOrigin注解来指定类或者方法支持跨域
    2. 或者使用CorsRegistry这个bean来进行全局配置

    这种做法如果不使用拦截器的话,不会出现问题。但是如果用了拦截器,可能会导致拦截器拦截以后,后面无法像response设置响应头。
    解决方法: 将处理Cors的拦截器设置到第一个位置。

    3.
    使用CorsFilter设置全局跨域
    自己实现了一个bean,通过继承CorsFilter和重写configurationSource方法,在方法中添加headers。
    过滤器也需要设置优先级@Order(Ordered.HIGHEST_PRECEDENCE)

    为什么过滤器可以而拦截器不行呢?

    因为过滤器依赖于 Servlet 容器,基于函数回调,它可以对几乎所有请求进行过滤。而拦截器是依赖于 Web 框架(如Spring MVC框架),基于反射通过AOP的方式实现的。