Tomcat은 Java EE 표준에 따라 두 가지 방법으로 기존 세션 ID를 지정하도록 요청할 수 있습니다. 2) "경로 매개 변수"(일반 매개 변수가 아니라 경로 매개 변수의 형식은 http://host/path/file.ext;jsessionid=xxx?a=b&c=d...
입니다. ";"및 쿼리 문자열이 경로 매개 변수 다음에 시작한다는 사실에주의하십시오). 내가 원하는 것은 "?"다음에 오는 쿼리 문자열에있는 REGIAL 매개 변수로 요청의 세션 ID를 전달하는 것입니다 (예 : http://host/path/file.ext?jsessionid=xxx
).요청에서 세션 ID를 가져 오는 Tomcat의 메서드를 재정의합니다.
요청이 가로 채고 컨테이너가 세션 ID (예 : 필터 또는 서블릿)를 결정하는 방식을 변경하는 시점까지는 너무 늦었습니다. 변경하려는 동작은 클라이언트의 요청을 처리하는 초기 단계입니다. 내가 피하고 싶은 것은 Coyote 또는 Tomcat 코드를 변경하고 Tomcat을 직접 재 빌드하는 것입니다. 내가 원하는 것은 해당 코드를 덮어 쓰고 Tomcat이 코드를 사용하여 요청 된 세션 ID를 결정하는 것입니다. 그건 불가능한 것 같지만 틀렸으면 좋겠어요.
이 방법으로 세션 ID를 가져 오는 것이 비표준임을 알고 있습니다. 쿠키 나 경로 매개 변수를 사용하는 것이 세션 상태를 추적하는 훌륭한 방법이라는 것을 알고 있습니다. 나는 실제 쿼리 문자열에 세션 ID를 두는 것이 자체의 잠재적 인 문제점을 제시한다는 것을 알고 있습니다. 어쨌든 그것을해야합니다.
Tomcat 7을 실행 중입니다. btw.
그렇게할만한 이유가있는 것 같습니다. 그것을 우리와 함께 나눌 수 있습니까? –
@JB Nizet - 물론입니다. 우리는 사용자에게 "쿠키를 사용하지 않습니다."라고 말합니다. Google의 앱은 개인 정보 보호와 관련이 있으며 좋은 일이라고 말할 수 있습니다. 이제는 세션 쿠키가 수명이 긴 쿠키와 다른 점이 있지만 많은 사용자에게 이러한 차이가 있습니다. 그래서 이것은 사생활 침해에 관한 것입니다. 어쨌든, 이것은 URL을 통해 세션을 지속해야 함을 의미합니다 (하이재킹에 대한 모든 종류의 보호, obv). 그러나 "경로 매개 변수"형식은 사용자가 저장할 수있는 콘텐츠를 제공 할 때 일부 브라우저를 혼동합니다 (일부 브라우저는 파일 이름에 jsessionid를 사용합니다). –
@Will Hartung - 감사합니다. 그리고 네, 맞습니다. 수명주기 초기에 params를 파싱하는 것에주의해야합니다. 그 이유 때문에'getParameter()'를 사용하지 않을 것이다; 쿼리 문자열에서 구문 분석했습니다. (여러분도 지적했듯이, 내 세션 ID 매개 변수는 POST 될 수 없지만 POST URL에는 여전히 쿼리 문자열이 추가 될 수 있기 때문에 괜찮습니다.) –