2013-01-03 3 views
1

쿠키를 저장하기 위해 ASP.net을 사용하고 있습니다. 나는 뒤에있는 코드 (C#)의 팝업에 쿠키를 저장한다. 쿠키를 요청하면 팝업이 닫히기 전에 쿠키가 있지만 팝업을 닫고 다시 돌아가서 Page_Load 이벤트의 쿠키를 보면 쿠키가 표시되지 않습니다. 그것을 어떻게 지속시킬 수 있습니까?쿠키가 지속되지 않습니다.

// Get the cookie. 
if (null != this.Request.Cookies["UserData"]) 
{ 
    // Transmit the cookie information using SSL. Note, the cookie data is still in plain text on the user's computer. 
    this.Request.Cookies["UserData"].Secure = true; 

    // Extract: Email 
    String strEmail = this.Server.HtmlEncode(oPage.Request.Cookies["UserData"]["UserEmail"]); 
} 

당연히 Page_Load 이벤트에 배치 코드에 따라 팝업 OK 버튼

// Set the cookie. 
this.Response.Cookies["UserData"].Secure = true; 
this.Response.Cookies["UserData"]["UserId"] = iId.ToString(); 
this.Response.Cookies["UserData"]["UserEmail"] = strEmail; 
this.Response.Cookies["UserData"].Expires = DateTime.Now.AddDays(1); 

에서

다음 코드, 무 (無)가 표시됩니다 난생 처음 그러나 이후의 부하는 쿠키를 표시해야합니다.

나는 .Values ​​[ "Subitem"] = "whatever"을 사용하면 약간 더 나은 행운을 얻었지만, 기반은 유지되지만 모든 하위 항목은 사라질 것입니다.

답변

2

가능한 한 가지 이유는 귀하의 페이지가 HTTP이지만 쿠키를 HTTPS 전용으로 설정하고 있다는 것입니다. 따라서 브라우저는 HTTP 요청을 통해 사이트로 다시 보내지 않습니다.

Fiddler (또는 다른 HTTP 디버거)를 사용하여 쿠키가 응답 및 다음 요청에서 올바르게 전송되는지 확인하십시오.

+0

나는 그것을 깨닫지 못했습니다. 확실한 의미는 https입니다. 쿠키를 비보안으로 저장하면 http 및 https가 해당 쿠키에 액세스 할 수 있습니까? –

+0

@SarahWeinberger, 예 "보안"으로 표시하지 않으면 HTTP 및 HTTPS를 사용할 수 있습니다. 클라이언트 측 스크립트에서 쿠키에 액세스 할 필요가 없다면 [HttpOnly] (http://msdn.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx)로 표시하십시오. –

+1

HttpOnly 설정을 존중하는 것은 브라우저/수신 말단에 달려 있다는 것을 명심하십시오. 네, 현재 브라우저가 그렇게합니다. 그러나 http 요청을 할 수있는 다른 도구는 필요하지 않습니다. – NotMe

관련 문제