সার্ভার সাইড কুকি এবং ক্লায়েন্ট সাইড কুকির মধ্যে পার্থক্য কী?


120

সার্ভারে এবং ক্লায়েন্টে কুকি তৈরির মধ্যে পার্থক্য কী? এগুলিকে কি সার্ভার সাইড কুকিজ এবং ক্লায়েন্ট সাইড কুকিজ বলা হয়? কুকি তৈরির কোনও উপায় আছে যা কেবল সার্ভারে বা ক্লায়েন্টে পড়তে পারে?


15
'সার্ভার সাইড কুকি' বনাম 'ক্লায়েন্ট সাইড কুকি' এর মতো কোনও জিনিস নেই। অনুরোধ এবং প্রতিক্রিয়া উভয়ই HTTP শিরোনামে কেবল কুকি, নাম / মান জোড়া প্রেরণ করা আছে।
ড্যান গ্রসম্যান

1
সম্ভবত সেশন ভেরিয়েবলগুলি উল্লেখ করা যায় যা সার্ভারে ডেটা রাখে। সাধারণত এখনও একটি সেশন শনাক্তকারী থাকে যা ক্লায়েন্টের সাইড কুকি হিসাবে রাখা হয়।
অ্যান্ড্রুআর

সমস্ত সম্ভাবনায়, প্রশ্নটি বিভিন্ন উপায়ে বোঝায় যে কুকিগুলি সার্ভার সাইডে এনকোড করা হয়েছে (যেমন তারা 'কুকি' এবং 'সেট-কুকি' প্রতিক্রিয়া শিরোনামে) এবং ক্লায়েন্ট সাইডে (যেমন তারা তাদের উপায়) 'কুকি' অনুরোধ শিরোনামে এনকোড করা হয়েছে - $ পাথ ভেরিয়েবল এবং সমস্ত জাজ)। আরএফসি 2109
ওফির রডনিতজ

উত্তর:


146

HTTP কুকি

কুকিজ হ'ল ওয়েবসাইটগুলি ব্রাউজারে রাষ্ট্রের তথ্য সংরক্ষণের জন্য ব্যবহৃত মূল / মান জুটি। বলুন আপনার একটি ওয়েবসাইট রয়েছে (উদাহরণ.কম), যখন ব্রাউজার কোনও ওয়েবপৃষ্ঠাকে অনুরোধ করে তখন ওয়েবসাইট ব্রাউজারে তথ্য সংরক্ষণের জন্য কুকিজ প্রেরণ করতে পারে।

ব্রাউজার অনুরোধ উদাহরণ:

GET /index.html HTTP/1.1
Host: www.example.com

সার্ভার থেকে উদাহরণ উত্তর:

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: foo=10
Set-Cookie: bar=20; Expires=Fri, 30 Sep 2011 11:48:00 GMT
... rest  of the response

এখানে ব্রাউজারে দুটি কুকি foo = 10 এবং বার = 20 সংরক্ষণ করা হয়েছে। দ্বিতীয়টি 30 সেপ্টেম্বর শেষ হবে। পরবর্তী প্রতিটি অনুরোধে ব্রাউজারটি কুকিজটি আবার সার্ভারে প্রেরণ করবে।

GET /spec.html HTTP/1.1
Host: www.example.com
Cookie: foo=10; bar=20
Accept: */*

সেশনস: সার্ভার সাইড কুকিজ

সার্ভার সাইড কুকিজ "সেশন" হিসাবে পরিচিত। এই ক্ষেত্রে ওয়েবসাইটটি একটি অনন্য সেশন আইডেন্টিফায়ারযুক্ত ব্রাউজারে একটি কুকি সঞ্চয় করে। স্থিতির তথ্য (উপরে foo = 10 এবং বার = 20) সার্ভারে সঞ্চিত থাকে এবং সেশন শনাক্তকারীটি সার্ভারে সঞ্চিত ডেটার সাথে অনুরোধের সাথে মেলে।

ব্যবহারের উদাহরণ

আপনি সংরক্ষণের জন্য দুটি সেশন এবং কুকিজ ব্যবহার করতে পারেন: প্রমাণীকরণের ডেটা, ব্যবহারকারীর পছন্দসমূহ, একটি ই-বাণিজ্য ওয়েবসাইটে কোনও চার্টের সামগ্রী ইত্যাদি ...

সুবিধা - অসুবিধা

সমাধানগুলির পক্ষে ভাল এবং কনসের নীচে। এগুলিই আমার মনে প্রথম আসে, অবশ্যই অন্যরা আছেন।

কুকি পেশাদাররা:

  • স্কেলিবিলিটি: সমস্ত ডেটা ব্রাউজারে সঞ্চিত থাকে যাতে প্রতিটি অনুরোধ লোড ব্যালেন্সারের মাধ্যমে বিভিন্ন ওয়েবসার্ভারগুলিতে যেতে পারে এবং অনুরোধটি পুরো পূরণ করার জন্য আপনার কাছে প্রয়োজনীয় সমস্ত তথ্য থাকে;
  • তারা ব্রাউজারে জাভাস্ক্রিপ্ট মাধ্যমে অ্যাক্সেস করা যেতে পারে;
  • সার্ভারে না থাকায় তারা সার্ভার পুনরায় চালু হতে বাঁচবে;
  • RESTful: অনুরোধগুলি সার্ভারের অবস্থার উপর নির্ভর করে না

কুকি কনস:

সেশন পেশাদাররা:

  • সাধারণত পিএইচপি ব্যবহার করা সহজ, সম্ভবত খুব বেশি পার্থক্য নেই।
  • সীমাহীন স্টোরেজ

সেশন কনস:

  • স্কেল করা আরও কঠিন
  • ওয়েব সার্ভারে পুনঃসূচনা আপনি সমস্ত সেশন হারাতে পারেন বা বাস্তবায়নের উপর নির্ভর করে না
  • বিশ্রামের নয়

অধিবেশন অনুকূল: secure?
ব্যবহারকারী 2167582

1
অধিবেশনগুলি আরও সুরক্ষিত কেন? আপনি যদি HTTP এর মাধ্যমে সেশন কুকি প্রেরণ করেন তবে এটি হাইজ্যাক করা যায়। যদি আপনি https সুরক্ষা ব্যবহার করেন তবে আপনি সুরক্ষিত কুকিজ (এনক্রিপ্টড, স্বাক্ষরিত ইত্যাদি ...) ব্যবহারের সময় সমান হওয়া উচিত
ফিলিপ্পো

1
কুকিজ কনস: প্রতিটি অনুরোধ আরও বড় করে তোলে, সম্ভাব্যভাবে কার্য সম্পাদনকে প্রভাবিত করে। আমি সংখ্যাগুলি জানি না তবে যেহেতু লোকেরা কুকিবিহীন ডোমেনগুলি এমন জিনিসের জন্য ব্যবহার করে আমি অনুমান করি যে এটি অগণিত।
maniexx

5
মূলত বিভ্রান্তিকর উত্তর - সেশনগুলি কুকিজ নয়। en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP_session আপনি পথ সেশন ম্যানেজমেন্ট সার্ভারে বাস্তবায়িত হয় উপর নির্ভর করে, অধিবেশন ভেরিয়েবল থাকতে পারে। আপনার সাধারণত একটি বা একাধিক কুকিজ থাকে যা সেশন ম্যানেজমেন্ট সম্পর্কিত, সেশন সনাক্তকারীকে ধরে রেখে। এছাড়াও কুকিজ বা সেশন ম্যানেজমেন্টের সাথে REST এবং RESTful এর কোনও সম্পর্ক নেই - REST এবং RESTful বাস্তবায়নের সেশন এবং কুকিজ থাকতে পারে।
জ্লাটিন জ্লেটেভ

2
Stackoverflow.com/questions/35054840/… দেখুন আমি বলছিলাম না যে সেশনগুলি সাধারণত কুকিজের সাথে প্রয়োগ করা হয় না, তবে সেশন ব্যবস্থাপনার জন্য অন্যান্য বিকল্প রয়েছে, সুতরাং সার্ভার-সাইড কুকিজ হিসাবে সেশন ভেরিয়েবলগুলি নিয়ে কথা বলা ভুল। আমি জেডাব্লুটিটিরও উল্লেখ করছিলাম যখন আমি ২০১৩ সালে উপরের মন্তব্যে বলেছিলাম যে "REST এবং RESTful বাস্তবায়নে সেশন এবং কুকিজ থাকতে পারে"। যদিও কিছু বিশুদ্ধবাদীরা যুক্তি দিতে পারে যে এটি কোনও REST এপিআই বাস্তবায়নের উপযুক্ত উপায় নয়।
জ্লাতিন জ্লাতেভ

57

আপনি সম্ভবত এইচটিটিপি কেবল কুকি এবং তাদের পাল্টা অংশের মধ্যে পার্থক্য বোঝাতে চান ?

এইচটিটিপি ক্লায়েন্ট সাইড জাভাস্ক্রিপ্টে কেবল কুকিই অ্যাক্সেস করা যায় না (কেবল পাঠানো বা এতে লিখিত) কেবল সার্ভার সাইড। যদি এইচটিটিপি কেবল পতাকাটি সেট না করা থাকে, বা কুকিটি (ক্লায়েন্ট সাইড) জাভাস্ক্রিপ্টে তৈরি করা হয়, তবে কুকিটি (ক্লায়েন্ট সাইড) জাভাস্ক্রিপ্ট পাশাপাশি সার্ভারের পাশ থেকেও পড়ে এবং লেখা যেতে পারে can


38

সমস্ত কুকি ক্লায়েন্ট এবং সার্ভার

এখানে কোন পার্থক্য নেই. একটি নিয়মিত কুকি সার্ভারের পাশ বা ক্লায়েন্টের পক্ষে সেট করা যায়। 'ক্লাসিক' কুকি প্রতিটি অনুরোধের সাথে ফেরত পাঠানো হবে। সার্ভার দ্বারা সেট করা একটি কুকি, প্রতিক্রিয়া হিসাবে ক্লায়েন্টকে প্রেরণ করা হবে। সার্ভারটি কেবল তখনই কুকি প্রেরণ করে যখন এটি স্পষ্টভাবে সেট করা বা পরিবর্তন করা হয়েছে, যখন ক্লায়েন্ট প্রতিটি অনুরোধে কুকি প্রেরণ করে।

তবে মূলত এটি একই কুকি।

তবে, আচরণ বদলে যেতে পারে

একটি কুকি মূলত একটি name=valueজুড়ি, তবে মানটি পরে আধা কোলন বিচ্ছিন্ন বৈশিষ্ট্যগুলির একগুচ্ছ হতে পারে যা কুকিটির (বা সার্ভার) দ্বারা যদি এটি প্রয়োগ করা হয় তবে কুকির আচরণকে প্রভাবিত করে । এই বৈশিষ্ট্যগুলি আজীবন, প্রসঙ্গ এবং বিভিন্ন সুরক্ষা সেটিংস সম্পর্কে হতে পারে।

শুধুমাত্র এইচটিটিপি (কেবলমাত্র সার্ভার নয়)

সেগুলির মধ্যে একটি বৈশিষ্ট্য কোনও সার্ভার দ্বারা সেট করা যেতে পারে যে এটি একটি এইচটিটিপি-কেবল কুকি। এর অর্থ হ'ল কুকিটি এখনও পিছনে পিছনে পাঠানো হয় তবে এটি জাভাস্ক্রিপ্টে উপলব্ধ হবে না। খেয়াল করুন, কুকি এখনও আছে! এটি ব্রাউজারে সুরক্ষিত একটি বিল্টইন, তবে কেউ যদি আই 5 এর মতো হাস্যকরভাবে পুরানো ব্রাউজার বা কোনও কাস্টম ক্লায়েন্ট ব্যবহার করে তবে তারা আসলে কুকিটি পড়তে পারে!

সুতরাং মনে হচ্ছে এখানে 'সার্ভার কুকিজ' রয়েছে তবে বাস্তবে তা নেই। এই কুকিগুলি এখনও ক্লায়েন্টের কাছে প্রেরণ করা হয়েছে। ক্লায়েন্টে কোনও কুকিকে সার্ভারে প্রেরণ করা থেকে বিরত করার কোনও উপায় নেই।

'একমাত্র-নেস' অর্জনের বিকল্প

আপনি যদি কেবলমাত্র সার্ভারে বা কেবল ক্লায়েন্টের কাছে কোনও মান সঞ্চয় করতে চান তবে আপনার অন্য কোনও ধরণের স্টোরেজ যেমন সার্ভারে একটি ফাইল বা ডাটাবেস বা ক্লায়েন্টের স্থানীয় স্টোরেজ প্রয়োজন need


হাই, আমি এই ধারণাগুলিতে খুব নতুন এবং আমার কিছু সন্দেহ আছে। আমি দুঃখিত, আমার প্রশ্নগুলি বোকা লাগতে পারে তবে আমি এখনও জিজ্ঞাসা করব। কোন সহায়তা, অনেক প্রশংসা করা হয় - ক্লায়েন্ট পক্ষের উপর সেট করা একটি কুকি কি কোনও ডোমেইনে প্রেরণ করা যায়? মানে, এটি কি সুরক্ষা হুমকি নয়? এছাড়াও, এটি এপিআই ইত্যাদির মতো নন-ব্রাউজার ক্লায়েন্টগুলির সাথে কীভাবে কাজ করে?
করণ চাদ

1
হাই @ করণচদা, আপনার যদি কোনও প্রশ্ন থাকে তবে দয়া করে পৃষ্ঠার শীর্ষে 'প্রশ্ন জিজ্ঞাসা করুন' বোতামটি ব্যবহার করে এটি আনুষ্ঠানিক প্রশ্ন হিসাবে জিজ্ঞাসা করুন। 7 বছরের পুরানো প্রশ্নের উপর একটি মন্তব্য থ্রেড সম্ভবত এটির সঠিক পরিমাণ আকর্ষণ করবে না। এই প্রশ্নোত্তর একটি লিঙ্ক যুক্ত করা, বা এমনকি এই উত্তর বিশেষভাবে, যোগ করা অবশ্যই ঠিক আছে। তার জন্য আপনি প্রতিটি পোস্টের নীচে 'ভাগ করুন' বোতামটি ব্যবহার করতে পারেন।
GolezTrol

এটা কি সত্য? ক্লায়েন্ট উত্পন্ন কুকিজ স্থানান্তরিত বলে মনে হচ্ছে না। তাহলে করছেন document.cookie="foo=bar"দ্বারা অনুসরণ fetch("/foobar", {credentials: 'include'} )সেখানে কোনও কুকি ধারণকারী পাঠানো হচ্ছে foo=bar। ডেভটুলস এবং কনসোল ব্যবহার করে সরাসরি এই সাইটে এই কোডটি চেষ্টা করেছিলেন।
অলিগোফ্রেন

হ্যাঁ এটি সত্য, ডক্সও বলেছে , তবে কিছু সুনির্দিষ্ট রয়েছে যা এর কারণ হতে পারে, যেমন অনুপস্থিতির মেয়াদ শেষ হয়ে যায়।
GolezTrol

1
@ মেরিনোস হ্যাঁ এটি করতে পারে। তবে আমার উত্তরটি কিছুটা সংক্ষিপ্ত ছিল যখন কুকির আচরণকে পরিবর্তন করে এমন বৈশিষ্ট্যগুলিতে আসে, তাই আমি এখন এটি আরও বাড়িয়েছি।
GolezTrol

4
  1. হ্যাঁ আপনি কুকি তৈরি করতে পারেন যা কেবল সার্ভার-সাইডে পড়া যায়। এগুলিকে "HTTP কেবল" -র কুকি বলা হয়, যেমন ইতিমধ্যে অন্যান্য উত্তরে ব্যাখ্যা করা হয়েছে

  2. না, "কুকিজ" তৈরি করার কোনও উপায় নেই (যা আমি জানি) যা কেবল ক্লায়েন্টের পক্ষে পড়তে পারে। কুকিগুলি ক্লায়েন্ট-সার্ভার যোগাযোগের সুবিধার্থে বোঝানো হয়।

  3. তবে আপনি যদি কিছু পছন্দ করেন তবে "ক্লায়েন্ট-কেবল-কুকিজ" পছন্দ করুন এর একটি সহজ উত্তর আছে: "স্থানীয় স্টোরেজ" ব্যবহার করুন।

স্থানীয় স্টোরেজ কুকিজের তুলনায় প্রকৃতপক্ষে সিন্টেক্সিকভাবে ব্যবহার করা সহজ। স্থানীয় স্টোরেজ বনাম কুকিজের একটি ভাল সাধারণ সংক্ষিপ্তসারটি এখানে পাওয়া যাবে:

https://courses.cs.washington.edu/courses/cse154/12au/lectures/slides/lecture21-client-storage.shtml#slide8

একটি বিন্দু: আপনি জাভাস্ক্রিপ্টে তৈরি কুকিগুলি জিইউআই সম্পর্কিত জিনিসগুলি কেবল ক্লায়েন্ট-সাইডে সঞ্চয় করতে ব্যবহার করতে পারেন। তবে কুকি প্রত্যেকটি অনুরোধের জন্য সার্ভারে প্রেরণ করা হয়, এটি এইচটি-পি-পি-র অনুরোধ শিরোনামের অংশ হয়ে যায় যাতে করে অনুরোধটিতে আরও ডেটা থাকে এবং প্রেরণে ধীর হয়ে যায়।

যদি আপনার পৃষ্ঠায় চিত্র এবং সিএসএস-ফাইল এবং স্ক্রিপ্টগুলির মতো 50 সংস্থান রয়েছে তবে কুকি প্রতিটি অনুরোধের সাথে পাঠানো হয় (সাধারণত)। এর মধ্যে আরও কি প্রতিটি ওয়েব অনুরোধ ব্রাউজারের কুকিজ প্রেরণ করে?

স্থানীয় স্টোরেজে সেই ডেটা স্থানান্তর সম্পর্কিত অসুবিধা নেই, এটি কোনও ডেটা প্রেরণ করে না। বেশ ভালো.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.