美文网首页
跨域问题

跨域问题

作者: 小名源治 | 来源:发表于2022-08-13 10:30 被阅读0次

    1.问题描述

    当我们访问后端接口的时候出现no-referrer-when-downgrade,那么就说明我们遇到了跨域问题。


    image.png

    2.问题原因

    我们前端的端口是8080,后端的端口是8888。
    8080访问8888就会认为是访问了另外一个域名(IP地址)(访问一个资源必须是IP地址+端口),浏览器就会认为这是一个不安全的访问。

    3.解决办法

    在SpringBoot项目中添加配置,统一让8080端口能够访问8888;
    添加一个自定义配置类,该类实现WebMvcConfigurer接口,然后重写他的addCorsMappings方法。将前端访问的路径添加进去。

    //处理跨域问题的类
    @Configuration
    public class WebConfig  implements WebMvcConfigurer {
        /**
         * 处理跨域问题
         * @param registry
         */
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            //跨域配置,不可设置为*,不安全, 前后端分离项目,可能域名不一致
            //本地测试 端口不一致 也算跨域
            registry.addMapping("/**")
                    //配置访问的地址,*代表所有的都可以访问
                    .allowedOrigins("http://localhost:8080")
                    //.allowedOriginPatterns("*")    所有地址都可以访问
                    //允许的请求方式
                    .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                    //是否支持跨域Cookie
                    .allowCredentials(true)
                    // 跨域允许时间
                    .maxAge(3600);
        }
    }
    

    4.遇到的问题

    配置所有路径都可以访问的时候:刚开始用的是allowedOrigins(""),发现并没有用,通过大量查阅资料才发现,这是我springboot版本的问题,版本说明
    用”
    “号必须用allowedOriginPatterns("*")才能支持所有路径访问。

    相关文章

      网友评论

          本文标题:跨域问题

          本文链接:https://www.haomeiwen.com/subject/lwncgrtx.html