qiulingxin 2018-04-18 07:15 采纳率: 33.3%
浏览 8995
已采纳

springboot 前后端分离使用shiro进行权限控制并使用cors进行跨域

springboot 前后端分离使用shiro进行权限控制并使用cors进行跨域
本来框架已经搭好了并且持续运行了一段时间前端已经能够拿到后台传过去的数据,cors配置

 @Configuration
//@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://192.168.1.141:8080","http://127.0.0.1:8080")
                .allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
                .allowCredentials(true).maxAge(3600);
    }

    /*private CorsConfiguration buildConfig(){
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOrigin("http://192.168.1.141:8080");
        config.addAllowedOrigin("http://127.0.0.1:8080");
        config.addAllowedHeader("*");
        config.addAllowedMethod(HttpMethod.GET);
        config.addAllowedMethod(HttpMethod.POST);
        config.addAllowedMethod(HttpMethod.PUT);
        config.addAllowedMethod(HttpMethod.DELETE);
        config.addAllowedMethod(HttpMethod.OPTIONS);
        return config;
    }

    @Bean
    public CorsFilter corsFilter(){
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(configSource);
    }*/
}

但是今天前端请求菜单接口的时候报302问题(注:今天之前请求菜单接口是可以跨域返回数据的),不明觉厉,弄了很久还是没有弄好。

前端也加了

xhrFields: {
        withCredentials: true
    },
    crossDomain: true,

可是为什么后台突然之间就获取不到cookies了,重点是突然,因为之前都是可以的

  • 写回答

3条回答 默认 最新

  • pxfman 2018-04-18 09:28
    关注

    cors配置比较简单,我是用的spring+shiro
    public class CORSFilter extends OncePerRequestFilter{

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        response.addHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));
        response.addHeader("Access-Control-Allow-Credentials","true");
        filterChain.doFilter(request,response);
    }
    

    }
    然后web.xml中配置指向上面的方法指向的类

    CORS
    com.core.filter.CORSFilter


    CORS
    /*


    就可以了。
    你说突然,还是从两个方面找问题,1 是不是之前跨域存在session共享问题 2 其他变化因素导致之前配置丢失

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题