이 질문은 오래된 것이지만 나는 여기에 정답을 가지고있는 것이 가치 있다고 생각했다.
필립은 클라이언트 측 Java와 서버 측 Java를 혼동하고 있습니다. 사용자 정의 접근 방식을 사용하지 않고 Java (J2EE) 및 ASP.Net과 같은 두 가지 서버 측 플랫폼간에 세션을 공유 할 수 없다는 것이 맞습니다.
그러나 애플릿은 클라이언트 측이므로 호스트 페이지의 세션 정보에 액세스 할 수 있어야합니다. 문제는 ASP.Net 2.0이 세션 쿠키에 HttpOnly 플래그를 추가했기 때문입니다. 이 플래그는 JavaScript 및 Java 애플릿이이 쿠키에 액세스하지 못하게합니다.
해결 방법은 세션 쿠키에서 HttpOnly 플래그를 해제하는 것입니다. 당신은 이전 버전에서, ASP.Net의 최신 버전의 구성에서 그것을 할 수있을 수도 있지만 해결책은 당신의 Global.asax 파일에 다음 코드를 추가했다 :
protected void Application_EndRequest(object sender, EventArgs e)
{
/**
* @note Remove the HttpOnly attribute from session cookies, otherwise the
* Java applet won't have access to the session. This solution taken
* from
* http://blogs.msdn.com/jorman/archive/2006/03/05/session-loss-after-migrating-to-asp-net-2-0.aspx
*
* For more information on the HttpOnly attribute see:
*
* http://msdn.microsoft.com/netframework/programming/breakingchanges/runtime/aspnet.aspx
* http://msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx
*/
if (Response.Cookies.Count > 0)
{
foreach (string lName in Response.Cookies.AllKeys)
{
if (lName == FormsAuthentication.FormsCookieName ||
lName.ToLower() == "asp.net_sessionid")
{
Response.Cookies[lName].HttpOnly = false;
}
}
}
}
참고 심지어이 수정과 모든 브라우저/OS/Java 조합이 쿠키에 액세스 할 수있는 것은 아닙니다. 현재 Windows XP에서 Java 1.6.0_13을 사용하여 Firefox 4.0.1에서 액세스 할 수없는 세션 쿠키 문제를 조사하고 있습니다.
해결 방법은 아빠가 제안한 접근 방식을 사용하는 것입니다. 세션 ID가 매개 변수로 애플릿에 전달 된 다음 요청 URL에 삽입됩니다 (서버에서 URL 세션을 시작해야 함) 수동으로 설정된 쿠키로 전송됩니다.