axios跨域请求之credentials

问题描述:
在使用Spring Security时,实现前后端分离出现跨域问题,在Controller添加了跨域注解@CrossOrigin,但是登录成功后没有权限访问想要的接口,在没有前后端分离的情况下是可以正常访问,后来查阅资料发现默认情况下,标准的跨域请求是不会发送cookie等用户认证凭据的。所以服务器就默认你是没有登录的,不具备访问权限的。

解决办法:
1、前段请求 设置:
在axios请求是设置参数:

 axios({
         method:'get',
         url:`${this.content_path}/authority/getauth`,
         withCredentials:true//*设置这个参数,让跨域请求携带cookie,因为cookie中包含了登录的信息
       })

2、后端同样要做设置。

//表示允许跨域请求
    @Bean
    public WebMvcConfigurer WebMvcConfigurer(){
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                .allowedHeaders("*")
                .allowCredentials(true);//表示允许请求携带cookie
            }
        };
    }

如果还未解决,可参考下一个

上一篇:asp.net ajax1.0基础回顾(六):调用ASPX页面方法


下一篇:WebMvcConfigurer添加多个拦截器的拦截路径问题