Client Cookie

hoom

Active Member
با سلام

من يه مشكلي توي ست كردن كوكي ها با ASP دارم. طبيعيه كه براي نوشتن كوكي از اين خط

Response.Cookies("MyCookie") = aValue
Reponse.Cookies("MyCookie").Expires = Date + 365

و براي خوندنش از اين روش

Dim aValue
aValue = Request.Cookies("MyCookie")

استفاده ميكنيم. حالا مشكل اينجاس كه من برنامه اي كه دارم روي دوتا سرور نصب شده (راستش رو بخوايين 9 تا ولي اونايي كه به موضوع ما ميخورن 2 تان) كه اين دوتا سرور لود بالانس شده اند. يعني بسته به ترافيك بعضي وقتا اين يكي و بعضي وقتا اون يكي به شما جواب ميده.
اگر دستورات بالا رو صدا بزنيم هر بار توي سرور كوكي رو درست ميكنه. يعني اگر شما به اون يكي سرور برين مقدارش با اون يكي فرق ميكنه. حالا ميخواستم ببينم كسي ميدونم چطوري ميشه Client Cookie با ASP درست كرد كه اصلا كوكي رو روي كامپيوتر يوزر بنويسه نه روي سرور؟

ارادتمند همگي
 

kavian

Member
سلام دوست عزيز

اصولاٌ كوكىها روي كامپيوترهاي Client ايجاد ميشن نه روي Server و اصلا تعريف كوكي همينه. دستوراتي رو كه شما اون بالا براي آبجكت هاي Request و Response نوشتيد كاملا درست هستند و همونطور كه خودتون ميخواين باعث ايجاد كوكي روي Client ميشه نه Server.
براي نگهداري اطلاعات روي Server از آبجكت Session استفاده ميشه و براي نگهداري اطلاعات روي Client از Cookies.
پس شما خودتون روش ايجاد كوكىها روي كلاينت رو بلدين و با استفاده از دستورات بالا يك كوكي به اسم MyCookie روي كامپوتر User ايجاد كردين كه بعد از يك سال از تاريخ ساخته شدن كوكي از بين ميره.
اما مشكل شما اينه كه از 2 سرور استفاده مىكنيد و قصد داريد كوكي رو كه با استفاده از سرور اول ساختيد بوسيله سرور دوم هم بخونيدش. اما تا اونجايي كه من مىدونم اين كار غير ممكنه چون كوكىها با استفاده از هدرهاي HTTP ذخيره و خونده ميشن و هروقت كه Browser درخواست يك صفحه وب رو از سرور ميكنه تنها كوكي هاي ايجاد شده توسط همون Server براي مرورگر ارسال ميشن و در نتيجه كوكىهايي كه بوسيله يك سايت وب ساخته شده اند تنها بوسيله همون وب سايت ميتونن خونده بشن. مثلا شما هيچ وقت نمىتونيد كوكي رو كه سايت Yahoo روي يك كلاينت ايجاد كرده با استفاده از سايت خودتون بخونيد.
اما يك سري خواصي وجود داره كه شايد بشه با استفاده از اونها يك كارايي كرد. البته من خودم تا بحال اصلا با اونها كار نكردم و درست سر در نمىيارم.
يكي خاصيت Domain كه ميشه با استفاده از مجموعه Response.Cookies اون رو تنظيم كرد. اين خاصيت از كوكي بطور پيش فرض برابر آدرس سايت وب شماست و شما ميتونيد با استفاده از اون آدرس وب متفاوتي رو وارد كنيد.
يك خاصيت ديگه به اسم Path هم وجود داره كه مشخص ميكنه كوكىها چطور خونده بشن. اين خاصيت رو ميشه طوري تنظيم كرد كه به كوكىها اجازه بده فقط بوسيله صفحات در دايركتورىهاي خاصي خونده بشن. بصورت پيش فرض اين خاصيت برابر دايركتوري ريشه سايت شما تنظيم ميشه.

اما راه ساده تر و شايد هم تنها راه شما اينه كه از روي هر كدوم از سرورها جداگانه 2 كوكي ايجاد كنيد و بعدا براي هر سرور از كوكي مربوط به خودش استفاده كنيد.


قربانت. كاويان
 

hoom

Active Member
سلام

اشتباه من اينجا بود كه اسم Domain رو كامل ميدادم. درصورتيكه فقط آخرش رو بايد مينوشتم. درضمن براي Path هم اگر دوتا باشن Request.Cookie اوني رو برميگردونه كه عميقتر باشه. مثلا اگر داشته باشيم /Path1/Path2 و يه كوكي ديگه داشته باشيم اينطوري /Path1 دستور Request.Cookie اولي رو برميگردونه. اين دوتا رو كه درست كردم جواب داد.
خيلي ممنون

ارادتمند
 

جدیدترین ارسال ها

بالا