쿠키의 함정
1308 단어 cookie
문제 개요
자동 로그인 기능을 사용하여 로그인할 때 쿠키를 지속합니다(암호화 없이 테스트만 가능).
final Cookie cookie = new Cookie("user", user.getId());
cookie.setMaxAge(5 * 60);
cookie.setPath("/");
inv.getResponse().addCookie(cookie);
로그아웃할 때 쿠키 삭제:
final Cookie c = new Cookie(cookie.getName(), null);
c.setMaxAge(0);
inv.getResponse().addCookie(c);
문제가 생겼습니다. 이 쿠키는 삭제되지 않았습니다. 즉, 취소는 전혀 작동하지 않습니다.
직접적 원인
삭제할 때 path를 설정하지 않았습니다. 기본 path는 현재 ui와 관련이 있습니다. 즉, 로그아웃한 ui가'xxxx/user/logout'이면 쿠키의 path를'xxx/user'로 설정합니다. 쿠키에 대해서name는 유일한 표식이 아니라domain과 path도 포함됩니다. 삭제할 때 표시되지 않은 지정한 path가'/'이기 때문입니다.
확장 읽기
Path 가시성
같은domain에서 현재 요청은 ui의 모든 부류uri의 쿠키만 읽을 수 있습니다. '읽을 수 있음' 은 어떤 개념입니까? servlet에서 리퀘스트에서 꺼낸 쿠키가 원하는 쿠키가 존재한다는 것입니다.예를 들어 path가 '/' 이면 모든domain 아래의 ui를 읽을 수 있고, path가 '/lib' 이면 '/lib/...' 아래의 ui만 읽을 수 있으며, path가 '/lib/user' 라면 ui가 '/lib' 인 요청을 Request에서 꺼낸 쿠키는 path가 '/lib/user' 인 쿠키를 포함하지 않습니다. 이것이 path의 가시적입니다.
쿠키에서 키/value만 꺼낼 수 있습니다
디버깅을 할 때 리퀘스트에서 꺼낸 쿠키는 키와value만 있고 다른domain과maxage 등 정보는 모두 잃어버린 것을 발견했습니다. 그 이유를 잘 모르고 기록을 했습니다. 높은 사람이 지나가면 지적을 해주면 더 이상 좋을 게 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
서버에서 쿠키 만료 값 가져오기브라우저는 쿠키 만료를 처리하므로 쿠키의 만료 값을 서버에 전달하지 않습니다. 서버에서 쿠키의 만료 값을 얻으려면 일부 조정을 해야 합니다. 두 가지 방법이 있습니다. JSON 값으로 쿠키를 생성할 수 있습니다 다른...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.