2009-03-12 4 views
6

로그 아웃 페이지를 호출하는 자바 스크립트 함수를 시작하는 로그인 링크가 있습니다. 로그 아웃 페이지는 다음과 같이 구성됩니다.내 쿠키가 삭제/설정 해제되지 않는 이유는 무엇입니까?

If Response.Cookies.Count > 0 Then 
    Response.Cookies("aLog").Value = Nothing 
    Response.Cookies.Clear() 
End If 

원래 쿠키를 가지고 있었지만 작동하지 않았습니다.

<script type="text/javascript"> 
    //<![CDATA[ 
    $(document).ready(function() { 
     $('#logout-link').click(function() { 
      if (confirm("Really log out?")) { 
       $.cookie('aLog', null); 
       location.href = $(this).attr('href'); 
      } 
      return false; 
     }); 
    }); 
    //]]> 
</script> 

JQuery와 기능 $.cookie 중 하나가 작동하지 않습니다 여기에

는 로그 아웃 페이지로 요청을 보내는 자바 스크립트입니다. 쿠키는 ASP.NET에 의해 설정되므로 ASP.NET과 함께 설정을 해제 할 수는 있지만 분명히 설정할 수는 없다고 생각했습니다. 어떤 아이디어/제안?

답변

10

ASP.NET에서 쿠키로 작업하는 것은 다소 직관적이지 않을 수 있습니다. 이미 클라이언트쪽에있는 쿠키를 삭제하려면 만료 날짜를 과거의 언젠가로 설정하고 클라이언트에게 새 쿠키를 다시 보내야합니다. 클라이언트 브라우저는 새로운 만료 날짜로 기존 쿠키를 업데이트하고, 이미 유효 기간이 경과 한 이후 즉시 그것을 죽일 것이다 : 렉스는 말 외에

HttpCookie cookie = Request.Cookies["aLog"]; 
cookie.Expires = DateTime.Now.AddYears(-10); 
Response.AppendCookie(cookie); 
+1

내 로그 아웃 페이지에 쿠키가 설정되어 있지 않습니다 (request.cookies.count = 0).하지만 로그인 페이지로 리디렉션되면 쿠키가 다시 나타납니다. 얼마나 짜증나. – Anders

+0

re :'AppendCookie' : "이 API는 .NET Framework 인프라를 지원하며 코드에서 직접 사용할 수 없습니다." [참고] (http://msdn.microsoft.com/en-us/library/system.web.httpresponse.appendcookie.aspx) – HABO

4

, 당신은 항상 '경로를 설정되어야한다 '(일반적으로 "/"와 (과) 같은) 쿠키를 사용합니다. 그렇지 않으면 쿠키의 표시 여부가 URL의 폴더 이름에 따라 달라 지므로 플랫 URL 스키마 이외의 설정이 있고 쿠키 삭제가 예기치 않게 작동하는 경우

+0

좋은 조언. 내 문제는 jQuery와 쿠키를 설정 한 다음 다른 경로의 ASP 페이지에서 쿠키를 삭제할 때 발생했습니다. – CleanUp

관련 문제