کوکی فری دامین و مشکل سیشن

1 Star2 Stars3 Stars4 Stars5 Stars ۱۶ امتیاز

Loading…

مشکل CDN و کپچا

مشکل از اونجایی ناشی شد که به یک باره کارکرد سیستم کپچای سایت از کار افتاد.و این از کار افتادن دقیقا بعد از اجرایی کردن cookie free domain در وردپرس شروع شد.

cookie free domain چیست؟

مساله ساده ست،ما با این کار سر سایت اصلی رو خلوت تر می کنیم تا سریع تر بشه،با توجه به اینکه فایلهای استاتیک نیاز به کوکی ندارن و مرورگر در هر درخواست مجبوره کوکی رو همراه اون بفرسته پس بهتره که این ارسال بیهوده رو غیرفعال کنیم.

بهترین راه برای این کار اینه که کاری کنیم فایلهای استاتیک از مسیر دیگه ای لود بشن،چرا که در این صورت کوکی رو به اون سمت میفرسته و به دامنه اصلی ما نمیفرسته و این یعنی خلوت تر شدن سایت ما.

به عنوان مثال اگر فایلی در سایت ما این باشه:

https://wd7.ir/static.jpg

و به این صورت در بیاد:

https://cdn.wd7.ir/static.jpg

قضیه حل میشه.

این مورد توی وردپرس با تعریف چند متغیر ثابت و ارجاعشون به CDN به راحتی عملی میشه.

توضیح فنی مشکل کلودفلیر به عنوان ‌CDN و کپچا

در یکی از سایتها بنا به دلایلی از کوکی فری دامین و واسط CloudFlare برای لود تصاویر و فایلهای وردپرس استفاده کرده بودیم (به این صورت که کلیه فایلهای قالب ، پلاگین و فایلهای آپلود شده از مسیر CDN.site.com لود میشدند  که متصل به Cloudflare بود و هسته اصلی سایت مستقیمأ از خود هاست بارگذاری میشد) که متوجه بروز مشکل در بخشی از سایت شدیم.

بعد از بررسی های کاملی که صورت گرفت برروی سایت از قبیل بررسی فایلها ، افزونه ها ، لاگ های وردپرس و … متوجه وجود مشکل سیشن و ست نشدن سیسشن شدیم.

مشکل به این صورت بود که چون فایل مستقلی که سیشن در داخلش استفاده شده بود از روی CloudFlare لود میشد و هسته اصلی سایت مستقیم از هاست ، باعث میشد سیشن مربوطه برای کاربر ذخیره نشود و برای درخواست کننده cloudflare ذخیره شود که در فایل نهایی سیشن کاربر بررسی میشد.

برای حل این مشکل با یک تغییر کد ساده به جای لود کردن فایل اصلی ، که مسئول ست کردن سیشن ها بود ، از حالت لود به واسطه CDN خارج شد و اقدام به لود مستقیم و آدرس دهی مستقیم کردیم (به جای استفاده از تابع get_template_directory_uri) و این مشکل به صورت کامل مرتفع گردید.

نکته این کار این بود که فایل کپچا به این صورت فراخوانی میشد،چرا که کوکی فری دامین فعال شده بود:

https://cdn.wd7.ir/captcha.php

و چون خروجی فایل بالا عکس و با هدر عکس ارسال میشه،پس استاتیک محسوب میشه و با توجه به فعال کردن کوکی فری دامین از CDN لود میشده  در نهایت کوکی به جای ارسال به دامنه اصلی به این CDN ارسال  میشده و باز در نتیجه سشن که بر مبنای کوکی داره کار میکنه اینجا برای سایت اصلی جواب نمیداد.

یعنی کاربر کپچا رو درست پر میکنه اما چون کوکی جای درستی ارسال نمیشه عملکرد کپچا خدشه دار میشده.

کاری که انجام شد یه تغییر ساده بود برای همسان کردن دامین ها.تا کوکی کار کنه.یعنی فایل بالا در کانفیگ کپچا به این صورت ست شد:

https://wd7.ir/captcha.php

 

کوکی فری دامین در وردپرس و تابع bloginfo(‘template_directory’)

اگر قراره از این متد در وردپرس استفاده بشه حتما باید برای مسیر دهی فایلهای استاتیک از تابع بالا استفاده بشه.تا موقع فعال کردن CDN و کوکی فری دامین وردپرس بصورت خودکار موارد استاتیک رو بصورت صحیح لود کنه.

اگر در مشکل بالا به جای استفاده از get_template_directory_uri از این تابع استفاده شده بود مشکلی پیش نمی آمد.

 

 

نظرات شما را پذیراییم