একই নামে একাধিক কুকিজ কীভাবে পরিচালনা করবেন?


92

উদাহরণস্বরূপ বলুন আমার কাছে একটি অ্যাপ্লিকেশন ছিল যা "এই" নামক কুকিতে সেট করতে নিম্নলিখিত HTTP শিরোনাম পাঠিয়েছিল:

Set-Cookie: a=1;Path=/;Version=1
Set-Cookie: a=2;Path=/example;Version=1

আমি যদি /exampleসার্ভারে অ্যাক্সেস করি তবে উভয় পাথই বৈধ, সুতরাং আমার কাছে "এ" নামে দুটি কুকি আছে! যেহেতু ব্রাউজার কোনও পথের তথ্য প্রেরণ করে না, তাই দুটি কুকি আলাদা করা যায় না।

Cookie: a=2; a=1

এই মামলাটি কীভাবে পরিচালনা করা উচিত? প্রথমটি বেছে নিন? সমস্ত কুকি মান সহ একটি তালিকা তৈরি করবেন? নাকি এই জাতীয় কেসটিকে বিকাশকারীর ভুল হিসাবে বিবেচনা করা উচিত?


ডুপ্লিকেট কুকির নামগুলি এড়ানোর জন্য আমি আমার সেরাটি (পড়ুন: আমি পারি সবকিছুই) করব। বেশিরভাগ লোক কখনও এই সমস্যাটি নিয়ে যায় নি - সঙ্গত কারণে।

ওয়েবসাইট কেবল তার নিজস্ব কুকি পড়তে পারে। এটি অন্য ওয়েবসাইট / ডোমেনের কুকি পড়তে পারে না। এই সুরক্ষা ব্রাউজার দ্বারা নিশ্চিত করা হয়। এটি নিখুঁত নতুনদের জন্য একটি পরামর্শ হতে পারে (আমার এই বিভ্রান্তি হয়েছিল)
অরুণ

উত্তর:


38

সাইটপয়েন্টে এই নিবন্ধ থেকে :

যদি একই নামের একাধিক কুকিজ কোনও প্রদত্ত অনুরোধ ইউআরআইয়ের সাথে মিলে যায় তবে ব্রাউজারটি একটি চয়ন করে।

পথটি যত বেশি সুনির্দিষ্ট হবে তত বেশি প্রাধান্য। তবে ডোমেন সহ অন্যান্য বৈশিষ্ট্যের উপর ভিত্তি করে অগ্রাধিকারটি অনির্ধারিত এবং ব্রাউজারগুলির মধ্যে পৃথক হতে পারে। এর অর্থ হ'ল আপনি যদি ".example.org" এবং "www.example.org" এর বিপরীতে একই নামের কুকি সেট করে রেখেছেন তবে কোনটি আবার পাঠানো হবে তা আপনি নিশ্চিত হতে পারবেন না।

সম্পাদনা করুন: ২০১০ সালের এই তথ্যটি পুরানো বলে মনে হচ্ছে, ব্রাউজারগুলি এখন পরিবর্তে একাধিক কুকিজ প্রেরণ করতে পারে, বিশদ বিবরণের জন্য নীচে @ নেটের উত্তর দেখুন


9
সুতরাং কিভাবে একাধিক অভিন্ন কুকি মুছে ফেলতে পারে? আমি এখন দু'দিন ধরে এটিকে আঘাত করেছি এবং সদৃশ কুকিগুলি অবিনাশী বলে মনে হচ্ছে।
বব জোনস

13
@ ব্র্যান্ট এই নিবন্ধটি কিছুটা ভুল হতে পারে - আমি সবেমাত্র ক্রোমকে একই নামের দুটি কুকি (তবে বিভিন্ন পথ) প্রেরণ করতে দেখেছি, সুতরাং "ব্রাউজার দ্বারা একটি বেছে নেওয়া হয়েছে" এটি অবশ্যই সত্য নয়। গভীরতম পাথ কুকি প্রথমে বিটিডাব্লু প্রেরণ করা হয়েছিল, যা যুক্তিসঙ্গত বলে মনে হয়। এবং অন্য কুকি এটিও এর মধ্যে তৈরি করেছিল।
জোনাস এন

4
ফায়ারফক্স (15) একই নামে দুটি কুকি পাঠায়! যদি এটির জন্য ডোমেন .a.comএবং হোস্টের সাথে দুটি কুকিজের মুখোমুখি হয়a.com
তাহা জাহাঙ্গীর

আসলে এই তথ্য ভুল। @ নেটের উত্তরটি আমাকে সঠিক হিসাবে চিহ্নিত করা উচিত।
ড্যান মিলন

4
404: বিখ্যাত @ নাটের উত্তর খুঁজে পাওয়া যায় নি।
d.popov

90

সাইটপয়েন্টে একটি নিবন্ধের উল্লেখ উত্তর সম্পূর্ণরূপে সম্পূর্ণ নয়। দয়া করে আরএফসি 6265 দেখুন (ন্যায়সঙ্গতভাবে, এই আরএফসিটি এই প্রশ্নটি পোস্ট করার পরে ২০১১ সালে প্রকাশিত হয়েছিল, যা পূর্ববর্তী আরএফসি 2965 2000 এবং আরএফসি 2109 1997 থেকে বাদ দেয়)।

বিভাগ ৫.৪ , উপ- অনুচ্ছেদে এটি বলতে হবে:

ব্যবহারকারী এজেন্ট নিম্নলিখিত ক্রমে কুকি-তালিকাটি বাছাই করতে হবে:

  • ছোট পাথ সহ কুকিজের আগে লম্বা পাথ সহ কুকিজ তালিকাভুক্ত করা হয়।

দ্রষ্টব্য: সমস্ত ব্যবহারকারী এজেন্ট কুকি-তালিকাকে এই ক্রম অনুসারে বাছাই করে না, তবে এই আদেশটি এই নথির লেখার সময় প্রচলিত অনুশীলনকে প্রতিফলিত করে এবং historতিহাসিকভাবে এমন সার্ভার রয়েছে যেগুলি (ভুলভাবে) এই আদেশের উপর নির্ভরশীল ছিল।

৪.২.২ বিভাগে এই ছোট রত্নটিও রয়েছে :

... সার্ভারগুলি সিরিয়ালাইজেশন ক্রমের উপর নির্ভর করবে না। বিশেষত, যদি কুকির শিরোনামে একই নামের সাথে দুটি কুকিজ থাকে (যেমন, পৃথক পৃথক পাথ বা ডোমেন বৈশিষ্ট্যের সাথে সেট করা হয়েছিল), সার্ভারগুলি এই কুকিগুলি শিরোনামের ক্রম অনুসারে প্রদর্শিত হবে না।

আপনার উদাহরণ অনুরোধ কুকিতে ( কুকি: একটি = 2; একটি = 1 ) লক্ষ করুন যে পাথ দিয়ে কুকি সেট / উদাহরণস্বরূপ ( একটি = 2 ) পাথ দিয়ে একটির একটি লম্বা পথ আছে / ( একটি = 1 ) এবং তাই এটি আপনাকে লাইনে প্রথম পাঠানো হবে, যা অনুমানের সুপারিশের সাথে মেলে। সুতরাং আপনি আপনার অনুমানের ক্ষেত্রে কম-বেশি সঠিক যে আপনি প্রথম মানটি নির্বাচন করতে পারেন

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

আপনি যদি কুকির মান নিয়ন্ত্রণ করার মতো অবস্থানে থাকেন এবং আপনি নিজের সমাধানটি বুদ্ধিহীন করতে চান তবে আপনি সেরা হন:

  1. নির্দিষ্ট পাথগুলিতে ওভাররাইড করতে আলাদা কুকির নাম ব্যবহার করা যেমন:

    • সেট-কুকি: এ-গ্লোবাল = 1; পথ = /; সংস্করণ = 1
    • সেট-কুকি: এ-উদাহরণ = 2; পথ = / উদাহরণ; সংস্করণ = 1
  2. কুকি মান নিজেই আপনার প্রয়োজন পাথ সংরক্ষণ:

    • সেট-কুকি: a = 1 & पथ = /; পথ = /; সংস্করণ = 1
    • সেট-কুকি: a = 2 & पथ = / উদাহরণ; পথ = / উদাহরণ; সংস্করণ = 1

এই উভয় কাজের ক্ষেত্রের জন্য উপলব্ধ কুকিজের তালিকার বিপরীতে অনুরোধ করা URL টি তুলনা করে কাঙ্ক্ষিত কুকি মান তুলতে সার্ভারে অতিরিক্ত যুক্তি প্রয়োজন ic এটা খুব সুন্দর না। এটা তোলে বোঝায় যা RFC দূরদর্শিতা প্রয়োজন যে একটি লম্বা পথ সম্পূর্ণরূপে একটি সংক্ষিপ্ত পাথ দিয়ে একটি কুকি অগ্রাহ্য ছিল না দুর্ভাগ্যজনক (উদাহরণ: আপনার উদাহরণে, আপনি পাবে একটি = 2: কুকি শুধুমাত্র )।


4
এই অভিশাপ আরএফসি থেকে এটি খনন করার জন্য আপনাকে ধন্যবাদ! // কেন এমন তাদের পড়া যদি কেউ এই সুপারিশ অনুসরণ করছে বিরক্ত ..?
Rast

4
দেখে মনে হচ্ছে ওয়াইল্ডফ্লাই 8.0 কুকিজের ক্রমের দিকে মনোযোগ দিচ্ছে এবং প্রথমটি ব্যবহার করে। এটি আমাদের 'নেস্টেড' প্রসঙ্গে আরেকটি অ্যাপ চালানোর অনুমতি দেয়। তবে, কিছু ব্রাউজার আরএফসির প্রস্তাব অনুসরণ না করলে এটি ব্যর্থ হবে। JSESSIONID2 এর মতো সেশন কুকির বিভিন্ন নাম সেট করার জন্য এটি করার সঠিক উপায়।
হনজাজদে

4
আপনার উত্তরটি পড়ার পরে আমি বড় ব্রাউজারগুলি পরীক্ষা করেছিলাম: ক্রোম 63 / অপেরা 55 / আইই 11 / এজ 16 / সাফারি 11 / ফায়ারফক্স 58 এবং তারা সকলেই এটিকে সঠিকভাবে পরিচালনা করতে দেখে মনে হচ্ছে যে দীর্ঘ পথের কুকি আরও ছোট পথ সহকারে আগে রয়েছে। এবং পিএইচপি-তে (version সংস্করণে পরীক্ষিত) এটি কেবল প্রথম কুকি পড়ে যা $ _COOKIE ভেরিয়েবলে সেট করা আছে।
আলেকজান্ডার শরণজ 12:58

4
path=/;Path=/স্পেসিফিকেশন কি এফআরসি -6265 অনুসারে কাজ করে? এরকম উল্লেখ আমি পাইনি। টমকেট হুমকি যে কোনও ";" ভুল প্রতীক হিসাবে পথে
হবিটাস

4
@ হবিটাস মনোযোগ দিন, এটি a=2&path=/example;Path=/exampleকোনও ;পথই নেই।
ফ্রাঙ্কলিন ইউ

2

একই নামের একাধিক মান থাকাতে কোনও সমস্যা নেই ... আপনি যদি সেগুলি চান তবে। আপনি মানটিতে অতিরিক্ত প্রসঙ্গ এম্বেডও করতে পারেন।

আপনি যদি তা না করেন তবে অবশ্যই দুটি নামই যদি সমাধান হয় তবে আপনি উভয় প্রসঙ্গই চান।

বিকল্পটি হ'ল আরও সুনির্দিষ্ট পাথ থেকেও একই পথের (এবং ডোমেন) একই কুকির নাম পাঠানো। এই সেট কুকির নির্দেশাবলী সেই কুকির মানটি ওভাররাইট করবে।

এখন যেহেতু আপনি সবচেয়ে গুরুত্বপূর্ণ অংশটি জানেন (তারা কীভাবে কাজ করে) এবং আপনি যা কিছু আলাদাভাবে প্রয়োজন তা পূরণ করতে পারেন, আপনার প্রশ্নের উত্তর আমার: এটি একটি বিকাশকারী সমস্যা।


0

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

আমি দৃ strongly়ভাবে এই অনুশীলন এড়াতে সুপারিশ করব।

তবে আপনি যদি সত্যিই জানতে চান যে কীভাবে ব্রাউজারগুলি (এবং অ্যাপ্লিকেশনগুলি) এই পরিস্থিতিটি পরিচালনা করে, তবে কেন একটি পরীক্ষার ছদ্মবেশ তৈরি করে দেখুন না।


4
ব্রাউজার দ্বারা এটি কী প্রেরণ করা হয় তার উপরে কোনও সার্ভারের কোনও নিয়ন্ত্রণ থাকে না। এটি এখনও পরিচালনা করা প্রয়োজন।
মার্টিন ওকনোর

0

আপনি যদি জাভা / স্কাল ফ্রেমওয়ার্ক ব্যবহার করেন প্লে: নজর রাখুন! যদি কোনও অনুরোধে একই নামের একাধিক কুকিজ থাকে তবে প্লে কেবলমাত্র তাদের কোডটিতে 1 টি উপস্থাপন করবে।


-2

আপনার যদি তাদের আলাদা করতে হয় তবে আপনাকে তাদের বিভিন্ন মূল মান দিতে হবে।

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