উত্তর:
বর্তমান কুকি স্পেসিফিকেশনটি আরএফসি 6265 , যা আরএফসি 2109 এবং আরএফসি 2965 (উভয় আরএফসি এখন "orতিহাসিক" হিসাবে চিহ্নিত হয়েছে) প্রতিস্থাপন করে এবং কুকিজের আসল-বিশ্বের ব্যবহারের বাক্য গঠনটি আনুষ্ঠানিক করে। এটি পরিষ্কারভাবে বলে:
- ভূমিকা
...
Reasonsতিহাসিক কারণে কুকিগুলিতে বেশ কয়েকটি সুরক্ষা এবং গোপনীয়তা অনুদান রয়েছে। উদাহরণস্বরূপ, একটি সার্ভার ইঙ্গিত দিতে পারে যে প্রদত্ত কুকি "সুরক্ষিত" সংযোগের জন্য তৈরি, তবে সিকিউর অ্যাট্রিবিউট সক্রিয় নেটওয়ার্ক আক্রমণকারীর উপস্থিতিতে সততা সরবরাহ করে না। একইভাবে, প্রদত্ত হোস্টের কুকিজ সেই হোস্টের সমস্ত পোর্ট জুড়ে ভাগ করা হয়, যদিও ওয়েব ব্রাউজারগুলির দ্বারা ব্যবহৃত "একই-উত্স নীতি" বিভিন্ন পোর্টের মাধ্যমে প্রাপ্ত সামগ্রীকে আলাদা করে দেয়।
এবং আরো:
8.5। দুর্বল গোপনীয়তা
কুকিগুলি বন্দর দিয়ে বিচ্ছিন্নতা সরবরাহ করে না । যদি একটি কোর্ট কোনও পোর্টে চলমান কোনও পরিষেবা দ্বারা কুকি পাঠযোগ্য হয় তবে একই সার্ভারের অন্য একটি পোর্টে চলমান পরিষেবা দ্বারাও কুকি পাঠযোগ্য। যদি কোনও কুকি কোনও একটি বন্দরে কোনও পরিষেবা দ্বারা লিখনযোগ্য হয় তবে কুকি একই সার্ভারের অন্য একটি পোর্টে চলমান পরিষেবা দ্বারাও লিখনযোগ্য। এই কারণে, সার্ভারগুলি উভয়ই একই হোস্টের বিভিন্ন পোর্টে পারস্পরিক অবিশ্বাস্য পরিষেবা চালানো উচিত নয় এবং সুরক্ষা সংবেদনশীল তথ্য সংরক্ষণ করতে কুকিজ ব্যবহার করবে।
RFC2965 3.3.1 অনুসারে (যা ব্রাউজারগুলি অনুসরণ করতে পারে বা নাও পারে), যদি না পোর্টটি port
প্যারামিটারের মাধ্যমে স্পষ্টভাবে নির্দিষ্ট করা থাকেSet-Cookie
হেডারের কুকিজ কোনও বন্দরে প্রেরণ বা নাও হতে পারে।
গুগলের ব্রাউজার সুরক্ষা হ্যান্ডবুক বলেছেন: ডিফল্টরূপে কুকি স্কোপটি বর্তমান হোস্ট নামের সমস্ত ইউআরএল-তে সীমাবদ্ধ - এবং বন্দর বা প্রোটোকল তথ্যের সাথে আবদ্ধ নয়। এবং কিছু লাইন পরে কুকিজ কেবলমাত্র একটি ডিএনএস নামে সীমাবদ্ধ করার উপায় নেই [...] তেমনি, নির্দিষ্ট বন্দরটিতে সেগুলি সীমাবদ্ধ করার কোনও উপায় নেই। (এছাড়াও, মনে রাখবেন, যে আই ই তার একই বংশোদ্ভূত নীতি মধ্যে না ফ্যাক্টর পোর্ট নাম্বার আছে এ সব ।)
সুতরাং এখানে কোনও সংজ্ঞায়িত আচরণের উপর নির্ভর করা নিরাপদ বলে মনে হয় না।
এটি একটি সত্যই পুরানো প্রশ্ন তবে আমি ভেবেছিলাম আমি ব্যবহার করা একটি কাজের সংযোজন করব।
আমার ল্যাপটপে দুটি পরিষেবা চলছে (একটি পোর্ট 3000 এবং অন্যটি 4000- এ)। আমি কখন লাফিয়ে উঠতাম ( http://localhost:3000
এবংhttp://localhost:4000
) এর , ক্রোম একই কুকিতে চলে যেত, প্রতিটি পরিষেবা কুকি বুঝতে পারে না এবং একটি নতুন তৈরি করে।
আমি খুঁজে পেয়েছি যে আমি যদি অ্যাক্সেস করেছি http://localhost:3000
এবংhttp://127.0.0.1:4000
, সমস্যাটি চলে গেছে, যেহেতু ক্রোম লোকালহোস্টের জন্য একটি কুকি এবং 127.0.0.1 এর জন্য রেখেছিল।
আবার, কোনও ব্যক্তি এই মুহুর্তে যত্ন নিতে পারে না তবে এটি আমার পরিস্থিতির পক্ষে সহজ এবং সহায়ক ছিল।
localhost
ভাগ করে ভাগ করে নিতে পারে না 127.0.0.1
। তবে পোর্ট নির্বিশেষে একই হোস্ট / ডোমেনে কুকিগুলি শেরে যায়।
এটি কুকি এসওপি (একই উত্স নীতি) এর একটি বড় ধূসর অঞ্চল।
তাত্ত্বিকভাবে, আপনি ডোমেনে পোর্ট নম্বর নির্দিষ্ট করতে পারেন এবং কুকি ভাগ করা হবে না। অনুশীলনে, এটি বেশ কয়েকটি ব্রাউজারের সাথে কাজ করে না এবং আপনি অন্যান্য সমস্যার মধ্যে চলে যাবেন। সুতরাং এটি কেবল তখনই সম্ভব যদি আপনার সাইটগুলি সাধারণ জনগণের জন্য না হয় এবং আপনি কোন ব্রাউজারগুলি ব্যবহার করবেন তা নিয়ন্ত্রণ করতে পারেন।
একই আইপি এর জন্য 2 টি ডোমেন নাম এবং কুকিজের জন্য পোর্ট নম্বরের উপর নির্ভর না করা আরও ভাল উপায় approach
সমস্যাটি ঘুরে দেখার বিকল্প উপায় হ'ল সেশন কুকির নাম বন্দর সম্পর্কিত করা। উদাহরণ স্বরূপ:
আপনার কোডটি ওয়েব সার্ভার কনফিগারেশন অ্যাক্সেস করতে পারে আপনার সার্ভারটি কোন পোর্ট ব্যবহার করে তা নির্ধারণ করতে এবং সেই অনুসারে কুকির নাম দিন।
মনে রাখবেন যে আপনার অ্যাপ্লিকেশনটি দুটি কুকিজই গ্রহণ করবে এবং আপনার বন্দরের সাথে অনুরূপ অনুরোধ করতে হবে।
কুকির নামে সঠিক পোর্ট নম্বর থাকা দরকার নেই তবে এটি আরও সুবিধাজনক।
সাধারণভাবে, কুকির নামটি আপনি যে সার্ভারের উদাহরণটি ব্যবহার করেন তা নির্দিষ্ট করে অন্য কোনও প্যারামিটার এনকোড করতে পারে, তাই এটি সঠিক প্রসঙ্গে ডিকোড করা যায়।
আমি একই মেশিনে দুটি ভিন্ন জ্যাঙ্গো অ্যাপ্লিকেশন চলমান (এবং ডিবাগ করার চেষ্টা করে) একই ধরণের সমস্যার মুখোমুখি হয়েছি।
আমি এই আদেশগুলি দিয়ে তাদের চালাচ্ছিলাম:
./manage.py runserver 8000
./manage.py runserver 8001
আমি যখন প্রথমটিতে এবং তারপরে দ্বিতীয়টিতে লগইন করতাম তখন আমি সর্বদা প্রথমটি লগ আউট করেছিলাম এবং বিপরীত দিকে।
আমি আমার / ইত্যাদি / হোস্টগুলিতে এটি যুক্ত করেছি
127.0.0.1 app1
127.0.0.1 app2
তারপরে আমি এই আদেশগুলি দিয়ে দুটি অ্যাপ্লিকেশন শুরু করেছি:
./manage.py runserver app1:8000
./manage.py runserver app2:8001
সমস্যা সমাধান :)
127.0.0.1:8000
একটির জন্য, এক localhost:8000
সেকেন্ডের জন্য এবং সম্ভবত ::1:8000
(সম্ভবত [::1]:8080
) কোনও তৃতীয়টির জন্য হোস্ট ফাইলটি স্পর্শ না করে ব্যবহার করতে পারেন।
::1 app1 app2 app3 app4 app5 appN
এটি .চ্ছিক।
পোর্টটি নির্দিষ্ট করা যেতে পারে তাই কুকিজ পোর্ট নির্দিষ্ট হতে পারে। এটি প্রয়োজনীয় নয়, ওয়েব সার্ভার / অ্যাপ্লিকেশনটির এটি অবশ্যই যত্ন করা উচিত।
উত্স: জার্মান উইকিপিডিয়া নিবন্ধ , আরএফসি 2109 , অধ্যায় 4.3.1
Port
প্যারামিটারটি সরিয়ে দেয়Set-Cookie
(কারণ বাস্তবে এটি বাস্তবে কেউ ব্যবহার করেনি), এবং এটি খুব স্পষ্ট করে তোলে যে একই হোস্টের কুকিগুলি বন্দরগুলির দ্বারা আলাদা নয়।