একটি ডোমেনে একটি জাভাস্ক্রিপ্ট কুকি তৈরি করা এবং এটি সাব ডোমেন জুড়ে পড়া


103

নীচে একটি জাভাস্ক্রিপ্ট কুকি যা ব্যবহারকারীর কম্পিউটারে 12 মাস ধরে লেখা থাকে।

আমরা আমাদের মূল ডোমেন যেমন কুকি সেট করার পরে example.com, ব্যবহারকারী যদি কোনও সাবডোমেনের মতো পরিদর্শন test.example.comকরে তবে আমাদের "পরীক্ষা" সাবডোমেন জুড়ে ব্যবহারকারীর ক্রিয়াকলাপ চিহ্নিত করতে হবে।

কিন্তু বর্তমান কোড সহ, যত তাড়াতাড়ি তারা চলে যেমন www.example.comএবং দর্শন test.example.com, তারা আর হিসাবে "HelloWorld" পতাকাঙ্কিত করা হয়।

সাবকিডমিনগুলি জুড়ে কুকিটি পড়ার অনুমতি দেওয়ার জন্য কি কেউ আমার কোডটিতে সহায়তা করতে সক্ষম হবে?

<script type="text/javascript">
  var cookieName = 'HelloWorld';
  var cookieValue = 'HelloWorld';
  var myDate = new Date();
  myDate.setMonth(myDate.getMonth() + 12);
  document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate;
</script>

উত্তর:


212

আপনার কুকিতে কেবল domainএবং pathবৈশিষ্ট্যগুলি সেট করুন , যেমন:

<script type="text/javascript">
var cookieName = 'HelloWorld';
var cookieValue = 'HelloWorld';
var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate 
                  + ";domain=.example.com;path=/";
</script>

4
আমি লোকালহোস্টে এটি করার চেষ্টা করছি এবং আমি পথ পরিবর্তন করতে পারছি না
এনভে

8
@ এনভে - ব্রাউজারগুলি লোকালহোস্ট কুকিজকে অন্যান্য কুকিজের থেকে কিছুটা আলাদাভাবে আচরণ করে। বা বরং, তারা সমস্ত কুকিজকে এমনভাবে আচরণ করে যা লোকালহোস্টের সাথে কাজ করা কঠিন করে তোলে । উদাহরণস্বরূপ, স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি 11112290/… দেখুন । আমি আপনার hostsফাইলটি সম্পাদনা এবং কিছু পছন্দ myserver.localকরার মতো পরামর্শ দিচ্ছি 127.0.0.1। তারপরে আপনি এটি আপনার স্থানীয় সার্ভার অ্যাক্সেস করতে (এবং কুকিজ সেট করার সময়) ব্যবহার করতে পারেন এবং আশা করি সবকিছু কাজ করা উচিত।
আরথ

4
আপনার তৈরি এবং পুনরুদ্ধার করা সমস্ত কুকির মান অবশ্যই স্ট্রিংয়ের মান। স্ট্রিংগুলিতে এমন অক্ষর থাকতে পারে যা স্থানীয় সংগ্রহস্থল পুনরুদ্ধার করার সময় বিপর্যস্ত করতে পারে। আমার একটি পরামর্শ হ'ল গ্লোবাল encodeURI()& decodeURI()কুকির নাম ও মানের জন্য যে কোনও রূপান্তর সংঘটিত হতে হবে তা পরিচালনা করার জন্য পদ্ধতিগুলি ব্যবহার করা। অর্থাত document.cookie = encodeURI(cookieName) +"=" + encodeURI(cookieValue)
Dzeimsas Zvirblis

4
যদি আপনার সার্ভার-সাইড কোডটি সি # তে লেখা থাকে, রিক স্ট্রহাল বেসড
উইন্ডস

দুর্ভাগ্যক্রমে জাভাস্ক্রিপ্ট ব্যবহারের sub.example.comজন্য কুকি সেট করতে পারে না.example.com
মেরিনোস আন

28

তুমি চাও:

document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;

অনুযায়ী বোঝায় যা RFC 2109 একটি কুকি সব সাবডোমেন উপলব্ধ আছে, আপনি একটি করা আবশ্যক .আপনার ডোমেনের সামনে।

পথ নির্ধারণ = / এ কুকি পুরো নির্দিষ্ট ডোমেনের (ওরফে .example.com) মধ্যে উপলব্ধ থাকবে।


এফডাব্লুআইডাব্লু - আমি মনে করি আপনার "পথ = মেয়াদোত্তীর্ণ =" টুকরোটি সরিয়ে এটিকে "মেয়াদ শেষ" = এ সেট করতে হবে।
ম্যালনসো

4
নতুন আরএফসি 6265. অনুযায়ী ডোমেনের সামনের অংশটি অন্তর্ভুক্ত করার দরকার নেই ।
ড্যান

7

এখানে একটি কার্যকরী উদাহরণ:

document.cookie = "testCookie=cookieval; domain=." + 
location.hostname.split('.').reverse()[1] + "." + 
location.hostname.split('.').reverse()[0] + "; path=/"

এটি একটি জেনেরিক সমাধান যা অবস্থান অবজেক্ট থেকে রুট ডোমেন নেয় এবং কুকি সেট করে। বিপরীত কারণ আপনি জানেন না যে আপনার কতগুলি সাবডোমেন রয়েছে।


ডোমেন এক্সটেনশান যেমন .co.in- এর দ্বিতীয় স্তরের শ্রেণিবদ্ধতা থাকলে এটি কাজ করবে না
অভয়

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