Persistent এবং Non-persistent Cookies: ধারণা এবং ব্যবহার
Cookies হল ছোট তথ্যের টুকরা যা সার্ভার থেকে ক্লায়েন্টে পাঠানো হয় এবং ক্লায়েন্ট (ব্রাউজার) বা সার্ভারে সংরক্ষণ করা হয়। HTTP প্রোটোকলের মধ্যে, Cookies প্রায়ই ব্যবহৃত হয় সেশন ডেটা ট্র্যাক করার জন্য, ইউজারের পার্সোনালাইজড অভিজ্ঞতা প্রদান করার জন্য, এবং সার্ভারের মধ্যে যোগাযোগের স্থিতি বজায় রাখার জন্য।
Persistent এবং Non-persistent Cookies দুটি প্রধান ধরনের কুকি রয়েছে:
- Persistent Cookies: এই ধরনের কুকি একটি নির্দিষ্ট সময়সীমা (একটি ভবিষ্যত তারিখ) পর্যন্ত ব্রাউজারে সংরক্ষণ করা হয়। সময়সীমা শেষে, কুকিটি স্বয়ংক্রিয়ভাবে মুছে যায়।
- Non-persistent Cookies: এই ধরনের কুকি শুধুমাত্র সেশন (যতক্ষণ না ব্রাউজার বন্ধ করা হয়) চলাকালীন থাকে। ব্রাউজার বন্ধ করার সাথে সাথে কুকি মুছে যায়।
Persistent এবং Non-persistent Cookies এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Persistent Cookies | Non-persistent Cookies |
|---|---|---|
| সংরক্ষণের সময়কাল | নির্দিষ্ট সময়সীমা থাকে, যেমন এক সপ্তাহ, এক মাস, ইত্যাদি | শুধুমাত্র সেশনের জন্য, ব্রাউজার বন্ধ হলে মুছে যায় |
| জীবনকাল | দীর্ঘ (সময় নির্ধারণ করা থাকে) | স্বল্প (ব্রাউজার বন্ধ হলে মুছে যায়) |
| ব্যবহার | ইউজারের পরিচিতি এবং প্রেফারেন্স ট্র্যাক করা | সেশনের তথ্য যেমন লগইন স্টেটাস ট্র্যাক করা |
| উদাহরণ | লগইন তথ্য সংরক্ষণ, ব্যবহারের জন্য পছন্দগুলি | সেশনের মধ্যে চলমান তথ্য (যেমন, কার্টে আইটেম রাখার জন্য) |
Apache HTTP Client এ Persistent এবং Non-persistent Cookies ব্যবহার
Apache HTTP Client-এ কুকি ব্যবস্থাপনা করতে CookieStore এবং HttpClientContext ব্যবহার করা হয়। এখানে, আমরা Persistent এবং Non-persistent কুকি ব্যবস্থাপনার জন্য কোড উদাহরণ দেখব।
1. Non-persistent Cookies ব্যবহারের উদাহরণ
Non-persistent Cookies সেশনের মধ্যে সংরক্ষণ করা হয়, এবং ব্রাউজার বন্ধ করার পর মুছে যায়।
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.impl.cookie.CookieSpecBase;
import org.apache.http.impl.client.HttpClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.cookie.CookieSpec;
import java.util.List;
public class NonPersistentCookiesExample {
public static void main(String[] args) {
try {
// CookieStore তৈরি করা
BasicCookieStore cookieStore = new BasicCookieStore();
// Non-persistent Cookie তৈরি করা (ব্রাউজার বন্ধ হলে মুছে যাবে)
BasicClientCookie cookie = new BasicClientCookie("session_id", "123456");
cookie.setDomain("example.com");
cookie.setPath("/");
cookie.setExpiryDate(null); // কোন Expiry Date সেট করা হবে না, সেজন্য এটি Non-persistent
cookieStore.addCookie(cookie);
// HttpClient তৈরি করা
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();
// GET অনুরোধ তৈরি করা
HttpGet httpGet = new HttpGet("https://example.com");
// HTTP অনুরোধ পাঠানো
HttpClientContext context = HttpClientContext.create();
context.setCookieStore(cookieStore);
httpClient.execute(httpGet, context);
// কুকি দেখানো
List<Cookie> cookies = cookieStore.getCookies();
for (Cookie c : cookies) {
System.out.println("Cookie: " + c.getName() + " = " + c.getValue());
}
// ক্লোজ করা
httpClient.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2. Persistent Cookies ব্যবহারের উদাহরণ
Persistent Cookies-এর ক্ষেত্রে একটি নির্দিষ্ট expiry date সেট করা হয়, যার পর এটি মুছে যায় না।
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.impl.client.HttpClientContext;
import org.apache.http.cookie.Cookie;
import java.util.Date;
import java.util.List;
public class PersistentCookiesExample {
public static void main(String[] args) {
try {
// CookieStore তৈরি করা
BasicCookieStore cookieStore = new BasicCookieStore();
// Persistent Cookie তৈরি করা (একটি expiry date সহ)
BasicClientCookie cookie = new BasicClientCookie("user_token", "abcdef123456");
cookie.setDomain("example.com");
cookie.setPath("/");
// Expiry Date সেট করা
Date expiryDate = new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000); // 1 দিন পর
cookie.setExpiryDate(expiryDate);
cookieStore.addCookie(cookie);
// HttpClient তৈরি করা
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();
// GET অনুরোধ তৈরি করা
HttpGet httpGet = new HttpGet("https://example.com");
// HTTP অনুরোধ পাঠানো
HttpClientContext context = HttpClientContext.create();
context.setCookieStore(cookieStore);
httpClient.execute(httpGet, context);
// কুকি দেখানো
List<Cookie> cookies = cookieStore.getCookies();
for (Cookie c : cookies) {
System.out.println("Cookie: " + c.getName() + " = " + c.getValue() + " Expiry Date: " + c.getExpiryDate());
}
// ক্লোজ করা
httpClient.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- Non-persistent Cookie
cookie.setExpiryDate(null)ব্যবহার করে non-persistent কুকি তৈরি করা হয়, যার ফলে এটি শুধুমাত্র সেশন চলাকালীন থাকে।
- Persistent Cookie
cookie.setExpiryDate(expiryDate)ব্যবহার করে persistent কুকি তৈরি করা হয়, যা একটি নির্দিষ্ট সময় পরে (যেমন 1 দিন পরে) মুছে যাবে।
- CookieStore
BasicCookieStoreব্যবহার করে কুকি সংরক্ষণ করা হয়, এবং সেটিHttpClient-এ সেট করা হয় যাতে কুকি পাঠানো যায় এবং সেগুলি ট্র্যাক করা যায়।
- HttpClientContext
HttpClientContext-এCookieStoreসংযুক্ত করা হয়, যাতে কুকি ব্যবস্থাপনা করা যায় এবং সার্ভারের কাছ থেকে রেসপন্সের কুকি সংগ্রহ করা যায়।
সারাংশ
Persistent এবং Non-persistent Cookies HTTP ক্লায়েন্টে ব্যবহারকারীর সেশন এবং প্রেফারেন্স ট্র্যাক করার জন্য ব্যবহৃত হয়। Non-persistent Cookies সেশনের জন্য সংরক্ষিত থাকে এবং ব্রাউজার বন্ধ হলে মুছে যায়, যখন Persistent Cookies একটি নির্দিষ্ট সময়ের জন্য ব্রাউজারে থাকে। Apache HTTP Client-এ কুকি ব্যবস্থাপনা সহজভাবে করা যায় এবং কাস্টম কুকি তৈরি, সেটিং, এবং সার্ভারের সাথে শেয়ার করা যায়।