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

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条)

相关推荐 更多相似问题