Cookie Class

The Cookie class lets you access cookies for your Force.com site using fApex.

Use the setCookies method of the pageReference class to attach cookies to a page.
Important
  • Cookie names and values set in Apex are URL encoded, that is, characters such as @ are replaced with a percent sign and their hexadecimal representation.
  • The setCookies method adds the prefix “apex__” to the cookie names.
  • Setting a cookie's value to null sends a cookie with an empty string value instead of setting an expired attribute.
  • After you create a cookie, the properties of the cookie can't be changed.
  • Be careful when storing sensitive information in cookies. Pages are cached regardless of a cookie value. If you use a cookie value to generate dynamic content, you should disable page caching. For more information, see “Caching Force.com Sites Pages” in the Salesforce online help.
Consider the following limitations when using the Cookie class:

The following are the instance methods for the Cookie class, which is part of Force.com sites.

Name Arguments Return Type Description
getDomain String Returns the name of the server making the request.
getMaxAge Integer Returns a number representing how long the cookie is valid for, in seconds. If set to < 0, a session cookie is issued. If set to 0, the cookie is deleted.
getName String Returns the name of the cookie. Can't be null.
getPath String Returns the path from which you can retrieve the cookie. If null or blank, the location is set to root, or “/”.
getValue String Returns the data captured in the cookie, such as Session ID.
isSecure Boolean Returns true if the cookie can only be accessed through HTTPS, otherwise returns false.

For more information on sites, see “Force.com Sites Overview” in the Salesforce online help.

The following example creates a class, CookieController, which is used with a Visualforce page (see markup below) to update a counter each time a user displays a page. The number of times a user goes to the page is stored in a cookie.

// A Visualforce controller class that creates a cookie
                    
// used to keep track of how often a user displays a page
public class CookieController { public CookieController() { Cookie counter = ApexPages.currentPage().getCookies().get('counter'); // If this is the first time the user is accessing the page,
        // create a new cookie with name 'counter', an initial value of '1',
        // path 'null', maxAge '-1', and isSecure 'false'.
        if (counter == null) { counter = new Cookie('counter','1',null,-1,false); } else { // If this isn't the first time the user is accessing the page
        // create a new cookie, incrementing the value of the original count by 1 Integer count = Integer.valueOf(counter.getValue()); counter = new Cookie('counter', String.valueOf(count+1),null,-1,false); } // Set the new cookie for the page ApexPages.currentPage().setCookies(new Cookie[]{counter}); } // This method is used by the Visualforce action {!count} to display the current
    // value of the number of times a user had displayed a page.
    // This value is stored in the cookie.
    public String getCount() { Cookie counter = ApexPages.currentPage().getCookies().get('counter'); if(counter == null) { return '0'; } return counter.getValue(); } }
// Test class for the Visualforce controller
@isTest
private class CookieControllerTest {
  // Test method for verifying the positive test case
  static testMethod void testCounter() { //first page view CookieController controller = new CookieController(); System.assert(controller.getCount() == '1'); //second page view controller = new CookieController(); System.assert(controller.getCount() == '2'); } }
The following is the Visualforce page that uses the CookieControllerApex controller above. The action {!count} calls the getCount method in the controller above.
<apex:page controller="CookieController">
You have seen this page {!count} times
</apex:page>
© Copyright 2000–2013 salesforce.com, inc. All rights reserved.
Various trademarks held by their respective owners.