Java后端获取sessionId不一致的问题

出现这个问题,主要的原因就是前端没有将cookie带给后端,或者后端的cookie没有带给前端。所以把这个解决了就基本解决了问题。

后端配置

在后端配置了一个过滤器,也是解决跨域的问题:
Java后端获取sessionId不一致的问题_第1张图片

<!-- 跨域设置 -->
    <filter>
        <filter-name>crossFilter</filter-name>
        <filter-class>com.wiki.fileter.CrossDomainFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>crossFilter</filter-name>
        <url-pattern>/*
    

CrossDomainFilter类中代码:

public class CrossDomainFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        //设置跨域请求
        HttpServletResponse response = (HttpServletResponse) res;
        //此处ip地址为需要访问服务器的ip及端口号
        response.setHeader("Access-Control-Allow-Origin", "http://localhost:8081");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type,Token,Accept, Connection, User-Agent, Cookie");
        response.setHeader("Access-Control-Max-Age", "3628800");

        //  System.out.println("设置跨域请求");
        chain.doFilter(req, response);
    }
    @Override
    public void destroy() {

    }
}

前端配置

前端用的vue,加上withCredentials: true:
Java后端获取sessionId不一致的问题_第2张图片
这样配置就解决获取sessionid不一致的问题了。

存在的问题

但是这样还是有个小的问题,那就是登录时用的post方式,然后前端其他地方用post方式获取地方就不行,必须前端和后端一起改为get方式才可以获取数据,我还没有找到问题所在,如果找到了会更新文章。

感谢观看!如果有什么问题或者交流的可以加我qq997355706。

你可能感兴趣的:(前端)