2011-11-10 15 views
5

मैं सर्वर पर कुकी को हटाना चाहता हूं (अतीत में Expires सेट करने के माध्यम से)। मैं इसे javax.ws.rs.core.NewCookie के साथ कैसे कर सकता हूं? मैं इस कोशिश कर रहा हूँ, लेकिन यह काम नहीं करता है:जेएक्स-आरएस न्यूक्यूकी के साथ सर्वर पर कुकी को कैसे हटाएं?

return Response.ok() 
    .entity("hello world!") 
    .cookie(
    new NewCookie(
     "foo", 
     "", 
     "/", 
     ".example.com", 
     1, 
     "no comment", 
     0, // maxAge 
     false 
    ) 
) 
    .build(); 

यह स्निपेट इस HTTP शीर्ष लेख का उत्पादन:

Set-Cookie:foo=;Version=1;Comment="no comment";Domain=.example.com;Path=/ 

इस शीर्ष लेख सर्वर से कुकी को हटाने नहीं है। एक संभावित कामकाज क्या है?

उत्तर

8

यह यह कैसे काम करता है (न कि गंदा दृष्टिकोण) द्वारा कुकी दूर करने के लिए ग्राहक के पक्ष मौका:

return Response.ok() 
    .header(
    "Set-Cookie", 
    "foo=deleted;Domain=.example.com;Path=/;Expires=Thu, 01-Jan-1970 00:00:01 GMT" 
); 
3

मैं प्रस्तावित नहीं कर सकते की कोशिश की, लेकिन यह काम करना चाहिए (क्योंकि यह कुकी हटाने के लिए जावा सर्वलेट एपीआई के लिए चारों ओर आम काम है)।

चरण 1. HttpServletResponse तक पहुंच प्राप्त करें। ऐसा लगता है कि आपकी सेवा में कुछ घोषित करने के लिए:

@Context 
HttpServletResponse _currentResponse; 

चरण 2. चलो सेट समाप्ति समय

Cookie userCookie = new Cookie(cookieName, ""); 
_currentResponse.setContentType("text/html"); 
userCookie.setMaxAge(0); 
_currentResponse.addCookie(userCookie); 
+0

यह ख काम नहीं करेगा केवल तभी जब इसकी समय सीमा समाप्त क्षेत्र अतीत –

+0

@Oleg में एक तिथि पर सेट है/सीए कुकी हटा दी जाती है - तो आप कुकी तारीख आवंटित करने के लिए लाइन को जोड़ने का प्रस्ताव? – Dewfy

+0

खेद पर ध्यान न दें, मुझे नहीं पता था कि setMaxAge (0) वास्तव में उत्पादन होगा 'समय-सीमा समाप्त = गुरु, 01 जनवरी 1970 00:00:10 GMT ' –