Создание сообщения об использовании куки (cookie)
Содержание:
- Что такое cookie и для чего они нужны
- JS Tutorial
- Example
- Приложение: GDPR
- Получение значения куки
- Usage
- Простой пример использования
- Summary
- Функция для получения файла cookie
- Создайте файл Cookie с помощью JavaScript
- Installation
- 5 последних уроков рубрики «Разное»
- Приватность и сторонние куки.
- Простой пример использования
- Теперь все вместе
- Получение значения куки
- tough
- API
Cookie — это записи в виде:
Всего лишь. Имена переменных придумывают программисты, а вот значения, могут зависеть от того, для чего та или иная кука записывается. Это может быть адрес текущей страницы, на которой находится пользователь, время встроенного проигрывателя для того, чтобы он мог продолжить изучать содержимое сайта или проигрывание выбранного видео или аудио с того места, где остановился в прошлый раз. Удобно? Пользователю? Пусть запретит и пусть ему станет неудобно, зато без записи данных на диск его компьютера или телефона.
Также в cookie могут записываться значение всяких служебных переменных, помогающих правильно идентифицировать пользователя. Например, переменная token может иметь какой-то случайный на первый взгляд набор символов, но если этот набор символов совпадёт с тем, что сохранён на сервере, программа, которая управляет доступом в закрытую часть сайта, не будет каждый раз спрашивать ввода логина и пароля. Удобно? Нет? Удобнее вводить каждый раз логин и пароль при переходе по сайту? Отключите cookie и наслаждайтесь!.. Хотя для особых параноиков, программисты могут передавать эти данные не в cookie, а в коде самих страниц сайта.
Так что письмо любимой бабушке о том, когда и где состоится передача горячих пирожков, написанное в соседней вкладке браузера в почтовом сервисе, никогда не попадёт в руки серого волка, подстерегающего Красную шапочку в засаде в кустах. По крайней мере, с помощью cookie точно.
Есть ещё ньюансы, которые дополнительно повышают безопасность использования хранящихся у пользователя cookie, но я думаю, написанного выше достаточно, чтобы пользователи не перестали от испуга пользоваться интернетом.
JS Tutorial
JS HOMEJS IntroductionJS Where ToJS OutputJS StatementsJS SyntaxJS CommentsJS VariablesJS OperatorsJS ArithmeticJS AssignmentJS Data TypesJS FunctionsJS ObjectsJS EventsJS StringsJS String MethodsJS NumbersJS Number MethodsJS ArraysJS Array MethodsJS Array SortJS Array IterationJS DatesJS Date FormatsJS Date Get MethodsJS Date Set MethodsJS MathJS RandomJS BooleansJS ComparisonsJS ConditionsJS SwitchJS Loop ForJS Loop WhileJS BreakJS Type ConversionJS BitwiseJS RegExpJS ErrorsJS ScopeJS HoistingJS Strict ModeJS this KeywordJS LetJS ConstJS Arrow FunctionJS ClassesJS DebuggingJS Style GuideJS Best PracticesJS MistakesJS PerformanceJS Reserved WordsJS VersionsJS 2009 (ES5)JS 2015 (ES6)JS 2016JS 2017JS JSON
Example
var http = require('http') var Cookies = require('cookies') // Optionally define keys to sign cookie values // to prevent client tampering var keys = 'keyboard cat' var server = http.createServer(function (req, res) { // Create a cookies object var cookies = new Cookies(req, res, { keys: keys }) // Get a cookie var lastVisit = cookies.get('LastVisit', { signed: true }) // Set the cookie to a value cookies.set('LastVisit', new Date().toISOString(), { signed: true }) if (!lastVisit) { res.setHeader('Content-Type', 'text/plain') res.end('Welcome, first time visitor!') } else { res.setHeader('Content-Type', 'text/plain') res.end('Welcome back! Nothing much changed since your last visit at ' + lastVisit + '.') } }) server.listen(3000, function () { console.log('Visit us at http://127.0.0.1:3000/ !') })
Приложение: GDPR
Эта тема вообще не связана с JavaScript, но следует её иметь в виду при установке куки.
В Европе существует законодательство под названием GDPR, которое устанавливает для сайтов ряд правил, обеспечивающих конфиденциальность пользователей. И одним из таких правил является требование явного разрешения от пользователя на использование отслеживающих куки.
Обратите внимание, это относится только к куки, используемым для отслеживания/идентификации/авторизации. То есть, если мы установим куки, которые просто сохраняют некоторую информацию, но не отслеживают и не идентифицируют пользователя, то мы свободны от этого правила
То есть, если мы установим куки, которые просто сохраняют некоторую информацию, но не отслеживают и не идентифицируют пользователя, то мы свободны от этого правила.
Но если мы собираемся установить куки с информацией об аутентификации или с идентификатором отслеживания, то пользователь должен явно разрешить это.
Есть два основных варианта как сайты следуют GDPR. Вы наверняка уже видели их в сети:
-
Если сайт хочет установить куки для отслеживания только для авторизованных пользователей.
То в регистрационной форме должен быть установлен флажок «принять политику конфиденциальности» (которая определяет, как используются куки), пользователь должен установить его, и только тогда сайт сможет использовать авторизационные куки.
-
Если сайт хочет установить куки для отслеживания всем пользователям.
Чтобы сделать это законно, сайт показывает модально окно для пользователей, которые зашли в первый раз, и требует от них согласие на использование куки. Затем сайт может установить такие куки и показать пользователю содержимое страницы. Хотя это создаёт неудобства для новых посетителей – никому не нравится наблюдать модальные окна вместо контента. Но GDPR в данной ситуации требует явного согласия пользователя.
GDPR касается не только куки, но и других вопросов, связанных с конфиденциальностью, которые выходят за рамки материала этой главы.
Получение значения куки
Для того, чтобы получить значение предварительно установленного куки для текущего документа, нужно использовать свойство :
Таким образом возвращается строка, которая состоит из списка пар имя/значение, разделенных точкой с запятой для всех куки, которые действуют для текущего документа. Например:
В данном примере 2 куки, которые были предварительно установлены: , который имеет значение , и , который имеет значение .
Функция для получения значения куки
Обычно, нам нужно только значение одного куки за один раз. Поэтому строка куки не удобна для использования! Здесь приводится функция, которая обрабатывает строку , возвращет только то куки, которое представляет интерес в конкретный момент:
Данная функция использует регулярное выражение для поиска имени куки, которое представляет интерес, а затем возвращает значение, которое обработано функцией для перекодирования к нормальному символьному виду. (Если куки не найдено, возвращается значение null.)
Данная функция проста в использовании. Например, для возврата значения куки :
Usage
Download the latest version and include it within your page along with jQuery (1.7.4 or later).
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.x.x/jquery.min.js"></script> <script type="text/javascript" src="jquery.ihavecookies.min.js"></script>
Then initialise the plugin using:
// With the default options $('body').ihavecookies(); // Or with customised options var options = { title: ... } $('body').ihavecookies(options);
This will append the cookie popup to the tag with the default settings and message.
Options
There are a number of options available to help with customisation:
Option | Default Value | Description |
---|---|---|
title | «Cookies & Privacy» | A custom title for the popup |
message | «Cookies enable you to use shopping carts and to personalize your experience on our sites, tell us which parts of our websites people have visited, help us measure the effectiveness of ads and web searches, and give us insights into user behavior so we can improve our communications and products.» | Add your own cookie message here, if you prefer not to use the default one. HTML can be included within this message. |
link | «/privacy-policy» | Link to your privacy policy for more information |
delay | 2000 | Time before the popup is displayed after page load (in milliseconds) |
expires | 30 | Days for the cookie to expire |
onAccept | function(){} | Optional callback function when ‘Accept’ button is clicked |
uncheckBoxes | false | Unchecks all checkboxes on page load that have class .ihavecookies applied to them. Set to true to turn this option on |
moreInfoLabel | ‘More information’ | Label for link to privacy policy |
acceptBtnLabel | ‘Accept All Cookies’ | Label for accept cookies button |
advancedBtnLabel | ‘Customise Cookies’ | Label for customise cookies button |
cookieTypesTitle | ‘Select cookies to accept’ | Title for customise cookies section |
fixedCookieTypeLabel | ‘Necessary’ | Label for the «necessary» cookie type |
fixedCookieTypeDesc | ‘These are cookies that are essential for the website to work correctly.’ | Description for the «necessary» cookie type |
cookieTypes | Array | Array of cookie types for which to show checkboxes for — See code example below. |
Events
Reopening the message
Use to reopen ihavecookies when clicking on an element. This opens the message with the previously selected checkboxes ticked.
$('button').click(function(){ $('body').ihavecookies(options, 'reinit'); });
Example Code
The code below shows an example of the cookie types options.
$('body').ihavecookies({ // Optional callback function when 'Accept' button is clicked onAccept: function() { // Do whatever you need to here... }, // Array of cookie types for which to show checkboxes. // - type: Type of cookie. This is also the label that is displayed. // - value: Value of the checkbox so it can be easily identified in // your application. // - description: Description for this cookie type. Displayed in // title attribute. cookieTypes: { type: 'Site Preferences', value: 'preferences', description: 'These are cookies that are related to your site preferences, e.g. remembering your username, site colours, etc.' }, { type: 'Analytics', value: 'analytics', description: 'Cookies related to site visits, browser types, etc.' }, { type: 'Marketing', value: 'marketing', description: 'Cookies related to marketing, e.g. newsletters, social media, etc' } , });
returns the value of the cookie.
returns if the the cookie type has been accepted, otherwise .
Styling
The plugin doesn’t include any CSS so it can be styled to fit in with your websites look and feel. The cookie message has an ID of . Sample CSS can be viewed in the accompanying file.
When the visitor accepts the message, the cookie with value is set along with cookie which contains an array of accepted cookie types e.g. . This will enable you to perform additional checks where necessary within your application (with regard to GDPR regulations).
Простой пример использования
В данном примере мы сделали страницу, которая запрашивает Ваше имя при первом посещении, затем она сохраняет Ваше имя в куки и показывает его при следующих посещениях.
Откройте страницу в новом окне. При первом посещении она попросит ввести имя и сохранит его в куки. Если Вы посетите страницу еще раз, она отобразит на экране введенное имя из куки.
Для куки задаем срок хранения в 1 год от текущей даты, это означает, что браузер сохранит Ваше имя даже если Вы закроете его.
Вы можете удалить куки нажав на ссылку Забудь обо мне!, которая вызывает функцию и обновляет страницу, чтобы снова запросить имя у Вас.
Вы можете посмотреть код страницы в браузере, выбрав функцию просмотра исходного кода. Здесь приводится основная часть кода:
Summary
provides access to cookies
- write operations modify only cookies mentioned in it.
- name/value must be encoded.
- one cookie up to 4KB, 20+ cookies per site (depends on a browser).
Cookie options:
- , by default current path, makes the cookie visible only under that path.
- , by default a cookie is visible on current domain only, if set explicitly to the domain, makes the cookie visible on subdomains.
- or sets cookie expiration time, without them the cookie dies when the browser is closed.
- makes the cookie HTTPS-only.
- forbids the browser to send the cookie with requests coming from outside the site, helps to prevent XSRF attacks.
Additionally:
- Third-party cookies may be forbidden by the browser, e.g. Safari does that by default.
- When setting a tracking cookie for EU citizens, GDPR requires to ask for permission.
Затем мы создаем , которая возвращает значение указанного файла cookie:
Пример
function getCookie(cname) {
var name = cname + «=»;
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(‘;’);
for(var i = 0; i <ca.length; i++) {
var c = ca; while (c.charAt(0) == ‘ ‘) {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return «»;
}
Объяснение функции:
Возьмите в качестве параметра cookiename .
Создайте переменную с текстом для поиска .
Декодируйте строку cookie, чтобы обрабатывать файлы cookie специальными символами, например:
Разделите на точке с запятой в массиве под названием ca .
Цикл через массив ca , и считывать каждое значение .
Если cookie не найден , возвращает значение cookie .
Если cookie не найдено, вернется .
Создайте файл Cookie с помощью JavaScript
JavaScript может создавать, читать и удалять файлы cookie вместе с свойством .
С помощью JavaScript файл cookie может быть создан следующим образом:
document.cookie = «username=Андрей Щипунов»;
Вы также можете добавить дату истечения срока действия (по времени UTC). По умолчанию файл cookie удаляется при закрытии браузера:
document.cookie = «username=Андрей Щипунов; expires=Thu, 18 Dec 2013 12:00:00 UTC»;
С помощью параметра path вы можете указать браузеру, к какому пути принадлежит файл cookie. По умолчанию файл cookie принадлежит текущей странице.
document.cookie = «username=Андрей Щипунов; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/»;
Installation
NPM
The npm package has a field pointing to an ES module variant of the library, mainly to provide support for ES module aware bundlers, whereas its field points to an UMD module for full backward compatibility.
Direct download
Starting with version 3 releases are distributed with two variants of this library, an ES module as well as an UMD module.
Note the different extensions: denotes the ES module, whereas is the UMD one.
Example for how to load the ES module in a browser:
<script type="module" src="/path/to/js.cookie.mjs"></script> <script type="module"> import Cookies from '/path/to/js.cookie.mjs' Cookies.set('foo', 'bar') </script>
Not all browsers support ES modules natively yet. For this reason the npm package/release provides both the ES and UMD module variant and you may want to include the ES module along with the UMD fallback to account for this:
<script type="module" src="/path/to/js.cookie.mjs"></script> <script nomodule defer src="/path/to/js.cookie.js"></script>
Here we’re loading the nomodule script in a deferred fashion, because ES modules are deferred by default. This may not be strictly necessary depending on how you’re using the library.
CDN
UMD:
<script src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js"></script>
ES module:
<script type="module" src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.mjs" ></script>
5 последних уроков рубрики «Разное»
-
Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.
-
Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг — это будущее Ваших сайтов
Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.
-
Создание вебсайта — процесс трудоёмкий, требующий слаженного взаимодействия между заказчиком и исполнителем, а также между всеми членами коллектива, вовлечёнными в проект. И в этом очень хорошее подспорье окажет онлайн платформа Wrike.
-
Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.
Приватность и сторонние куки.
Куки значительным образом влияют на конфиденциальность и анонимность пользователей Интернета. Хотя куки отправляются только на серверы домена, для которого они предназначены, веб-страница может подгружать изображения или другие компоненты из других доменов. Куки, получаемые во время подгрузки этих компонентов из других доменов, называются «сторонними».
Устанавливая баннеры на разных сайтах и используя сторонние куки, рекламная компания может отследить перемещение пользователей между этими сайтами.
Рекламные компании используют сторонние куки для отслеживания перемещений пользователя по сайтам. В частности, рекламная компания может отслеживать пользователей на всех сайтах, где установлены их рекламные баннеры. Знание страниц, посещённых пользователем, позволяет менять направленность рекламы в зависимости от предпочтений пользователя.
Создание профиля пользователей рассматривается как потенциальная угроза приватности даже при отслеживании в рамках одного домена, но особенно это актуально при отслеживания на нескольких доменах с использованием сторонних куки. По этой причине в некоторых странах куки регулируются законодательством.
Правительство Соединенных Штатов приняло строгие законы в отношении куки в 2000 году, после того, как выяснилось, что Агентство по борьбе с наркотиками США использовало куки для отслеживания пользователей, просмотревших их антинаркотическую рекламу в сети. В 2002 году Дэниел Брандт установил, что ЦРУ устанавливает на компьютеры постоянные куки со сроком хранения до 2010 года. Когда ЦРУ было уведомлено о неправомерности подобного использования куки, управление заявило, что это было непреднамеренно и прекратило их установку. 25 декабря 2005 года Брандт обнаружил, что Агентство национальной безопасности оставляло пару постоянных куки после обновления программного обеспечения. После этого сообщения Агентство немедленно отключило куки.
Директива Евросоюза о конфиденциальности электронных данных от 2002 года держит нормы, касающиеся использования куки. В частности, пункт 3 статьи 5 устанавливает, что хранение данных (в том числе куки) может осуществляться лишь если:
- пользователю предоставляется информация о том, как эти данные используются;
- пользователь имеет возможность отказаться от этого.
Тем не менее, в данной статье также говорится, что хранение технически необходимых данных освобождается от этих норм. Ожидалось, что директива вступит в силу с октября 2003 года, но доклад от декабря 2004 года отмечает, что эти положения не нашли применения на практике и что в некоторых государствах (Словакия, Латвия,Греция, Бельгия и Люксембург) эти положения не внесены в национальные законодательства. Доклад предлагает провести тщательный анализ ситуации в государствах, участвующих в договоре.
Спецификация P3P включает возможность для веб-сервера сообщить браузеру о нарушении конфиденциальности, указывая характер собираемой информации и цели сбора. Сюда входит и использование информации, полученной с помощью куки. По спецификации P3P браузер может принимать или отклонять куки согласно пользовательским настройкам или же спросить пользователя.
Многие веб-браузеры, включая Safari от Apple и Internet Explorer версий 6 и 7 от Microsoft, поддерживают спецификации P3P, которые позволяют определить, следует ли разрешать сторонние куки. Веб-браузер Opera позволяет пользователям отказаться от сторонних куки и создать глобальные или выборочные профили безопасности для веб-доменов. Firefox 2 был лишён этой опции, но она была восстановлена в версии 3.
Простой пример использования
В данном примере мы сделали страницу, которая запрашивает Ваше имя при первом посещении, затем она сохраняет Ваше имя в куки и показывает его при следующих посещениях.
Откройте страницу в новом окне. При первом посещении она попросит ввести имя и сохранит его в куки. Если Вы посетите страницу еще раз, она отобразит на экране введенное имя из куки.
Для куки задаем срок хранения в 1 год от текущей даты, это означает, что браузер сохранит Ваше имя даже если Вы закроете его.
Вы можете удалить куки нажав на ссылку Забудь обо мне!, которая вызывает функцию и обновляет страницу, чтобы снова запросить имя у Вас.
Вы можете посмотреть код страницы в браузере, выбрав функцию просмотра исходного кода. Здесь приводится основная часть кода:
Теперь все вместе
Пример
function setCookie(cname, cvalue, exdays) { var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = «expires=»+d.toUTCString();
document.cookie = cname + «=» + cvalue +
«;» + expires + «;path=/»;
}function getCookie(cname) { var name = cname + «=»;
var ca = document.cookie.split(‘;’); for(var i = 0; i < ca.length; i++)
{ var c = ca; while (c.charAt(0) == ‘
‘) { c = c.substring(1); }
if (c.indexOf(name)
== 0) { return c.substring(name.length, c.length);
} }
return «»;}function
checkCookie() { var user = getCookie(«username»);
if (user != «»)
{ alert(«Добро пожаловать снова » + user);
} else {
user = prompt(«Пожалуйста, введите свое имя:», «»);
if (user != «» &&
user != null) {
setCookie(«username», user, 365);
} }}
Приведенный выше пример запускает функцию при загрузке страницы.
Получение значения куки
Для того, чтобы получить значение предварительно установленного куки для текущего документа, нужно использовать свойство :
Таким образом возвращается строка, которая состоит из списка пар имя/значение, разделенных точкой с запятой для всех куки, которые действуют для текущего документа. Например:
В данном примере 2 куки, которые были предварительно установлены: , который имеет значение , и , который имеет значение .
Функция для получения значения куки
Обычно, нам нужно только значение одного куки за один раз. Поэтому строка куки не удобна для использования! Здесь приводится функция, которая обрабатывает строку , возвращет только то куки, которое представляет интерес в конкретный момент:
Данная функция использует регулярное выражение для поиска имени куки, которое представляет интерес, а затем возвращает значение, которое обработано функцией для перекодирования к нормальному символьному виду. (Если куки не найдено, возвращается значение null.)
Данная функция проста в использовании. Например, для возврата значения куки :
tough
Functions on the module you get from . All can be used as pure functions and don’t need to be «bound».
Note: prior to 1.0.x, several of these functions took a parameter. This has since been removed from the API as it was no longer necessary.
Parse a cookie date string into a . Parses according to RFC6265 Section 5.1.1, not .
Format a Date into a RFC1123 string (the RFC6265-recommended format).
Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).
Answers «does this real domain match the domain in a cookie?». The is the «current» domain-name and the is the «cookie» domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a «suffix match».
The parameter will run the other two parameters through or not.
Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the «directory» of a «file» in the path, but is specified by Section 5.1.4 of the RFC.
The parameter MUST be only the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the property of node’s output.
Answers «does the request-path path-match a given cookie-path?» as per RFC6265 Section 5.1.4. Returns a boolean.
This is essentially a prefix-match where is a prefix of .
alias for
alias for
Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns if the hostname cannot have cookies set for it.
For example: and both have public suffix .
For use with , sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). The sort algorithm is, in order of precedence:
- Longest
- oldest (which has a 1ms precision, same as )
- lowest (to get beyond the 1ms precision)
var cookies = /* unsorted array of Cookie objects */ ; cookies = cookies.sort(cookieCompare);
Note: Since JavaScript’s is limited to a 1ms precision, cookies within the same milisecond are entirely possible. This is especially true when using the option to . The property is a per-process global counter, assigned during construction with . This preserves the spirit of the RFC sorting: older cookies go first. This works great for , since headers are parsed in order, but may not be so great for distributed systems. Sophisticated s may wish to set this to some other logical clock such that if cookies A and B are created in the same millisecond, but cookie A is created before cookie B, then . If you want to alter the global counter, which you probably shouldn’t do, it’s stored in .
Generates a list of all possible domains that the parameter. May be handy for implementing cookie stores.
Generates a list of all possible paths that the parameter. May be handy for implementing cookie stores.
API
This creates a cookie jar corresponding to the current request and response, additionally passing an object options.
A Boolean can optionally be passed as options.secure to explicitally specify if the connection is secure, rather than this module examining request.
Note that since this only saves parameters without any other processing, it is very lightweight. Cookies are only parsed on demand when they are accessed.
express.createServer( Cookies.express( keys ) )
This adds cookie support as a Connect middleware layer for use in Express apps, allowing inbound cookies to be read using and outbound cookies to be set using .
This extracts the cookie with the given name from the header in the request. If such a cookie exists, its value is returned. Otherwise, nothing is returned.
can optionally be passed as the second parameter options. In this case, a signature cookie (a cookie of same name ending with the suffix appended) is fetched. If no such cookie exists, nothing is returned.
- If the signature cookie hash matches the first key, the original cookie value is returned.
- If the signature cookie hash matches any other key, the original cookie value is returned AND an outbound header is set to update the signature cookie’s value to the hash of the first key. This enables automatic freshening of signature cookies that have become stale due to key rotation.
- If the signature cookie hash does not match any key, nothing is returned, and an outbound header with an expired date is used to delete the cookie.
This sets the given cookie in the response and returns the current context to allow chaining.
If the value is omitted, an outbound header with an expired date is used to delete the cookie.
If the options object is provided, it will be used to generate the outbound cookie header as follows:
- : a number representing the milliseconds from for expiry
- : a object indicating the cookie’s expiration date (expires at the end of session by default).
- : a string indicating the path of the cookie ( by default).
- : a string indicating the domain of the cookie (no default).
- : a boolean indicating whether the cookie is only to be sent over HTTPS ( by default for HTTP, by default for HTTPS). .
- : a boolean indicating whether the cookie is only to be sent over HTTP(S), and not made available to client JavaScript ( by default).
- : a boolean or string indicating whether the cookie is a «same site» cookie ( by default). This can be set to , , , or (which maps to ).
- : a boolean indicating whether to overwrite previously set cookies of the same name ( by default). If this is true, all cookies set during the same request with the same name (regardless of path or domain) are filtered out of the Set-Cookie header when setting this cookie.
To send a secure cookie, you set a cookie with the option.
HTTPS is necessary for secure cookies. When is called with and a secure connection is not detected, the cookie will not be set and an error will be thrown.
This module will test each request to see if it’s secure by checking:
- if the property of the request is set to , or
- if the property of the request is set to .
If your server is running behind a proxy and you are using , you need to configure your server to read the request headers added by your proxy to determine whether the request is using a secure connection.
For more information about working behind proxies, consult the framework you are using:
If your Koa or Express server is properly configured, the property of the request will be set to match the protocol reported by the proxy in the header.