Tôi có một cookie được tạo từ một servlet và tôi muốn liên tục - tức là, đặt cookie, đóng IE, khởi động lại, và vẫn có thể đọc cookie. Mã mà tôi đang sử dụng là:Cookie liên tục từ một servlet trong IE
HttpServletResponse response =
(HttpServletResponse) FacesContext.getCurrentInstance()
.getExternalContext().getResponse();
Cookie cookie = new Cookie("someKey", "someValue");
cookie.setMaxAge(7 * 24 * 60 * 60);
response.addCookie(cookie);
Điều này hoạt động tốt trong firefox, nhưng trong IE 6/7, cookie không được lưu giữa các lần khởi động lại trình duyệt. Tôi đã kiểm tra mọi thứ mà tôi có thể nghĩ đến trong cài đặt của mình, nhưng không thể tìm ra nguyên nhân khiến cookie bị xóa. Theo như tôi biết, gọi setMaxAge với một số dương làm cho cookie bền bỉ. Bất kỳ ý tưởng tại sao điều này sẽ xảy ra sai?
Sửa
Tôi đã xác minh, sử dụng các thông tin lừa hơn đề nghị của Olaf, rằng cookie đang nỗ lực để được thiết lập như là một cookie phiên, không phải là một cookie; độ tuổi tối đa được đặt thành "kết thúc phiên". Vì vậy, nó không có vẻ như độ tuổi tối đa đang được thiết lập cho IE - Tôi đã xác minh rằng trong Firefox, độ tuổi tối đa được thiết lập chính xác. Tôi vẫn không biết chuyện gì đang diễn ra.
Vâng, có vẻ như đây là vấn đề. Nhìn vào các tiêu đề trong Fiddler, Max-Age đang được thiết lập, nhưng không hết hạn. Tôi đã sửa đổi các tiêu đề của câu trả lời thông qua Fiddler và thêm thuộc tính Expires và cookie của tôi đã được lưu. Tuyệt vời - bây giờ tôi chỉ cần tìm một cách để thêm thuộc tính Expires vào cookie từ Java. –