Cookie获取问题:ajax方法后端只获取到一个Cookie,Request无法获取到自定义的Cookie

需求

登录时的账号生成Cookie传值到新的页面,新的页面里存在ajax方法会向后台传值与Cookie,后台获取值和Cookie。

问题

将Cookie值传到前台后,F12看页面有Cookie值,但是提交ajax中的方法的request头中,无自定义Cookie。后台也无法获取到自定义的Cookie,只能获取到一个默认的Cookie。

分析

登录后设置了username和值作为cookie的key和value,但是在使用ajax方法传值时却没有自己定义的cookie,只有系统自带的cookie,网上找了一些方法,有说跨域ajax无法传cookie的,有说是ajax默认传递同源cookie的,感觉默认传同源不传非同源比较靠谱。

解决方法

1.前端html页面中的ajax方法中设置:
xhrFields: { withCredentials: true },
原因:ajax会自动带上同源的cookie,不会带上不同源的cookie,通过添加该设置可以让ajax传不同源cookie。

(试过后还是不行,原来是自己的一些小失误导致的,请看第二步)

2.检查创建cookie时的语句:

   //创建cookie
    Cookie cookie = new Cookie("userName",username);
    cookie.setPath("/");
    cookie.setMaxAge(30);
    resp.addCookie(cookie);

其中,自己忘记了写第三句和第四句话,因为cookie的地址的设置产生的问题。

参考:
https://blog.csdn.net/lissdy/article/details/7401211
https://blog.csdn.net/qq_34545974/article/details/100593539

你可能感兴趣的:(JAVA,Cookie,java,ajax,cookie)