Managing Cookies in SuiteScript

Setting Cookies

To set a cookie in SuiteScript, you modify the HTTP response headers within a Suitelet.

Example: Setting a Cookie in a Suitelet

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
define(['N/https'], function(https) {
    function onRequest(context) {
        if (context.request.method === 'GET') {
            // Generate a session token or any data you want to store
            var sessionToken = 'your_generated_session_token';

            // Set the cookie with desired attributes
            context.response.setHeader({
                name: 'Set-Cookie',
                value: 'sessionToken=' + sessionToken + '; Path=/; HttpOnly; Secure'
            });

            // Respond to the client
            context.response.write('Cookie has been set.');
        }
    }

    return {
        onRequest: onRequest
    };
});

Attributes Explained:

  • Path: Defines the URL path for which the cookie is valid.
  • HttpOnly: Prevents JavaScript access to the cookie, enhancing security.
  • Secure: Ensures the cookie is only sent over HTTPS connections.

Retrieving Cookies

To access cookies sent by the client, parse the Cookie header from the HTTP request.

Example: Retrieving a Cookie in a Suitelet

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
define([], function() {
    function onRequest(context) {
        if (context.request.method === 'GET') {
            var cookieHeader = context.request.headers['Cookie'];
            var cookies = parseCookies(cookieHeader);
            var sessionToken = cookies['sessionToken'] || 'Not Set';

            context.response.write('Session Token: ' + sessionToken);
        }
    }

    // Helper function to parse cookies
    function parseCookies(cookieHeader) {
        var cookies = {};
        if (cookieHeader) {
            var pairs = cookieHeader.split(';');
            pairs.forEach(function(pair) {
                var parts = pair.split('=');
                var key = parts[0].trim();
                var value = parts[1] ? parts[1].trim() : '';
                cookies[key] = value;
            });
        }
        return cookies;
    }

    return {
        onRequest: onRequest
    };
});

Deleting Cookies

To delete a cookie, set its expiration date to a past date.

Example: Deleting a Cookie in a Suitelet

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
define(['N/https'], function(https) {
    function onRequest(context) {
        if (context.request.method === 'GET') {
            // Set the cookie with an expiration date in the past
            context.response.setHeader({
                name: 'Set-Cookie',
                value: 'sessionToken=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; Secure'
            });

            context.response.write('Cookie has been deleted.');
        }
    }

    return {
        onRequest: onRequest
    };
});

Leave a comment

Your email address will not be published. Required fields are marked *