JSESSIONID cookie 未存储
Posted
技术标签:
【中文标题】JSESSIONID cookie 未存储【英文标题】:JSESSIONID cookie not stored 【发布时间】:2016-10-30 22:28:42 【问题描述】:我有一个用 Angular 编写的前端,它在 localhost:3002 上运行。 我有一个用 Spring-boot 编写的后端,它在 localhost:8080 上运行。
我添加了一个过滤器来处理 CORS(我在 SO 上找到并适应了我的需要):
@Component
public class CORSFilter implements Filter
@Override
public void init(FilterConfig filterConfig) throws ServletException
@Override
public void doFilter(ServletRequest request, ServletResponse res, FilterChain chain) throws IOException, ServletException
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "http://localhost:3002");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(request, response);
public void destroy()
当我进行身份验证时,我可以看到服务器发送了一个 cookie:
此 cookie 不会随以下请求一起发送。这导致 401 响应:
我查看了 chrome 控制台的“资源”面板,发现没有存储任何 cookie。
有什么想法吗?
【问题讨论】:
【参考方案1】:在您配置$httpProvider
的文件中,添加此行以指定您要通过跨站点请求发送凭据:
$httpProvider.defaults.withCredentials = true;
通常,AngularJS 会自动发送这些带有请求的 cookie(对于同源请求),但由于您的请求是跨站点的,因此您必须手动配置。
【讨论】:
以上是关于JSESSIONID cookie 未存储的主要内容,如果未能解决你的问题,请参考以下文章
http 请求头的Cookie中的 JSESSIONID 是什么?