我有一个Sling Servlet,它使doPost
和doPut
返回一个json作为响应。
在代码中,我需要获取一个cookie,如果该cookie不存在,我需要创建它。
我的问题是我正在做response.addCookie
但是如果我再次调用该方法,则cookie不存在,所以我不创建任何东西。我错过了什么?
这是我的代码的一部分: 这是存储(或更新)cookie的方法:
private SlingHttpServletResponse storeAppsCookie(SlingHttpServletRequest request, SlingHttpServletResponse response, String appsJsonFormat) {
String username = getUsernameFromCookie(request);
if(username.equals("")) return response;
Cookie appsCookie = request.getCookie(this.appsCookieKey);
if(appsCookie != null) {
appsCookie.setValue(appsJsonFormat);
} else {
appsCookie = new Cookie(this.appsCookieKey, appsJsonFormat);
}
appsCookie.setMaxAge(30*24*60*60); //for 30 days
appsCookie.setHttpOnly(true);
response.addCookie(appsCookie);
return response;
}
以下是doGet
方法中的最终代码:
String parsedContent = parseAppsToUpdate(request, appsArray);
response = storeAppsCookie(request, response, parsedContent);
response.setContentType("application/json");
response.getWriter().write(userApps.toString());
答案 0 :(得分:0)
我刚刚找到答案。
代码中缺少一个cookie路径:
appsCookie.setPath("/")
通过此设置,现在可以保存cookie,我可以在浏览器端看到它。