В современном веб-разработке работа с cookies является важной частью взаимодействия с пользователем. В JavaScript обращение с cookies осуществляется через свойство document.cookie, что делает этот процесс довольно простым. Однако, как быть, если вы используете Delphi и фреймворк TMS Web Core? В этой статье мы рассмотрим, как работать с cookies в этих условиях.
Проблема
В JavaScript работа с cookies сводится к чтению и записи значения свойства document.cookie. Пример кода на JavaScript для получения и установки cookies выглядит следующим образом:
function getCookie(cookie_name) {
const name = cookie_name + "=";
const decodedCookie = decodeURIComponent(document.cookie);
const ca = decodedCookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1);
if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
}
return "";
}
function setCookie(cookie_name, value, minutes) {
let expires = "";
if (minutes) {
let date = new Date();
date.setTime(date.getTime()+(minutes*60*1000));
expires = "; expires="+date.toUTCString();
}
document.cookie = cookie_name + "=" + value + expires + ";SameSite=Strict; path=/";
}
Как же получить и установить cookies, используя Delphi в TMS Web Core?
Решение
Для работы с cookies в TMS Web Core можно использовать класс TCookies из модуля WEBLib.Cookies. Вот примеры функций на Object Pascal для получения и установки cookies:
uses WEBLib.Cookies, System.DateUtils;
procedure SetCookie(cookie_name, value: String; minutes: UInt64);
var
Cookies: TCookies;
begin
Cookies := TCookies.Create;
try
Cookies.Add(cookie_name, value, IncMinute(Now, minutes));
Cookies.SetCookies;
finally
Cookies.Free;
end;
end;
function GetCookie(cookie_name: String): String;
var
Cookies: TCookies;
Cookie: TCookie;
begin
Result := '';
Cookies := TCookies.Create;
try
Cookies.GetCookies;
Cookie := Cookies.Find(cookie_name);
if Assigned(Cookie) then
Result := Cookie.Value;
finally
Cookies.Free;
end;
end;
Альтернативное решение
Хотя предпочтительнее использовать стандартные средства TMS Web Core для работы с cookies, существует альтернативный способ, который включает использование смешанного кода на Delphi и JavaScript:
procedure SetCookie(cookie_name, value: String; minutes: UInt64);
begin
asm
// JavaScript код для установки cookies
end;
end;
function GetCookie(cookie_name: String): String;
begin
Result := '';
cookie_name := cookie_name + '=';
asm
// JavaScript код для получения cookies
end;
end;
Этот подход не требует использования модуля WEBLib.Cookies и System.DateUtils, но в то же время он менее предпочтителен, так как нарушает принцип разделения кода на платформы и может привести к сложностям в обслуживании и масштабировании проекта.
Заключение
В данной статье мы рассмотрели, как работать с cookies в TMS Web Core, используя Delphi. Приведены примеры функций для установки и получения cookies, которые можно использовать в ваших проектах. Рекомендуется использовать стандартные средства TMS Web Core для обеспечения лучшей совместимости и поддержки.
Статья о том, как работать с cookies в веб-разработке с использованием Delphi и фреймворка TMS Web Core.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.