2014-03-31 4 views
0

나는 설문 조사 양식을 가진 페이지를 가지고 있으며, 양식의 사용자 투표와 제출시 ajax 요청을 호출하여 결과를 양식에 표시합니다.양식상의 쿠키 세션/쿠키 처리

투표시 사용자가 투표에서 이미 투표함을 나타내는 쿠키가 생성됩니다. 따라서 다음에 사용자가 페이지에 액세스 할 때 쿠키가 발견되면 해당 사용자에 대한 투표가 비활성화됩니다.

내 문제는 투표 후 firefox를 사용할 때 사용자가 url (URL로 이동하여 Enter 키를 누릅니다)을 다시 누르면 사용자가 계속 투표 할 수 있다는 것입니다. 사용자가 새로 고침 버튼을 누르거나 F5를 누르면 사용자가 투표로 감지됩니다.

이것은 Firefox와 Chrome에서만 발생하는 것 같습니다.

필요한 경우 더 많은 정보를 기꺼이 제공합니다.

내 Java 클래스에 쿠키를 만들고 가져 오는 내 메소드가 있습니다.

public static void addCookie (RequestContext context, String key, String value){ 
     Cookie cookie = new Cookie(key, value); 
     cookie.setMaxAge(60 * 60 * 24 * 365); 
     context.getResponse().addCookie(cookie); 

} 

public static String getCookieValue(RequestContext context, 
     String cookieName, String defaultValue) { 
    String value; 
    CookieHash cookies = context.getCookies(); 
    Cookie cookieValue = cookies.getCookie(cookieName); 
    if (cookieValue == null) { 
     value = defaultValue; 
    } else { 
     value = cookieValue.getValue(); 
    } 
    return value; 



} 

답변

0

내가 아는 한 당신은 파이어 폭스에서 쿠키를 만들 수 있습니다. 새로 만들 필요없이 쿠키에 액세스 할 수 있습니다. 어떻게 쿠키를 만들고 읽습니까? 작성하고 크게 도움이 될 쿠키를 읽을 코드를보고)

내가 개인적으로 쿠키를 만들고 읽을 이러한 기능을 사용하고 있습니다 :

function createCookie(name,value,days) 
{ 
if (days) 
{ 
    var date = new Date(); 
    date.setTime(date.getTime()+(days*24*60*60*1000)); 
    var expires = "; expires="+date.toGMTString(); 
} 
else 
    var expires = ""; 

document.cookie = escape(name)+"="+escape(value)+expires+"; path=/"; 
} 

function readCookie(name) 
{ 
var nameEQ = escape(name) + "="; 
var ca = document.cookie.split(';'); 

for (var i=0; i < ca.length; i++) 
{ 
    var c = ca[i]; 
    while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length)); 
} 
return false; 
} 

그래서 다음 코드는 나를 위해 완벽하게 작동합니다

createCookie('myCookieName', 1, 30); 
var cookieValue = readCookie('myCookieName'); 
if(cookieValue == 1) 
{ 
    /* some action here*/ 
} 
0

ajax를 사용하는 경우 hxrhttprequest 객체는 Mozilla에서 다르게 구현됩니다. 나는 확실하지 않다. 그냥 추측.