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
};
});