ارور content mixed پس از نصب ssl چیست + راه حل رفع آن
با رشد اهمیت امنیت اطلاعات در فضای وب، استفاده از گواهیهای SSL به یک ضرورت تبدیل شده است. با این حال، پس از نصب این گواهیها، گاهی اروری به نام “Mixed Content” یا “محتوای ترکیبی” ظاهر میشود که ممکن است امنیت سایت را کاهش داده یا از بارگذاری صحیح صفحات جلوگیری کند.
این مقاله از سایت دولوپ، به بررسی علل بروز این ارور، نحوه شناسایی آن و راهکارهای عملی برای رفع مشکل پس از نصب SSL میپردازد.
ارور content mixed چیست؟
ارور Mixed Content یا “محتوای ترکیبی” زمانی رخ میدهد که یک صفحه ی وب که با پروتکل HTTPS بارگذاری شده، تلاش میکند محتوایی مانند اسکریپتها، تصاویر، ویدیوها یا فایلهای CSS را از منابعی با پروتکل HTTP بارگذاری کند.
این وضعیت باعث نقض امنیت میشود. زیرا پروتکل HTTP رمزنگاری نشده و میتواند اطلاعات را در معرض شنود یا دستکاری قرار دهد.
مرورگرهای مدرن مثل گوگل کروم، فایر فاکس و سافاری، این محتوا را مسدود میکنند یا هشداری امنیتی نمایش میدهند تا از کاربر در برابر تهدیدات احتمالی محافظت کنند.
برای رفع این خطا، باید تمام منابع خارجی صفحه را نیز با پروتکل HTTPS بارگذاری کنید تا امنیت اتصال بهطور کامل حفظ شود. اگر قصد رفع خطای کانتنت میکس پس از نصب اس اس ال را دارید، این راهنما میتواند موجب حل مشکل شما شود.
Mixed Content Error چه زمانی رخ میدهد؟
این خطا زمانی رخ میدهد که در دل یک صفحهای که با HTTPS بارگذاری شده، برخی منابع فرعی مانند فایلهای جاوااسکریپت، فونتها، تصاویر یا ویدیوها، هنوز از طریق HTTP فراخوانی شوند.
این عدم تطابق میان پروتکلهای امن و ناامن باعث میشود که مرورگر به آن به چشم یک تهدید امنیتی نگاه کند، زیرا امکان شنود یا دستکاری داده های نا امن همچنان وجود دارد.
چنین مشکلی معمولا نشانهای از ناسازگاری های پنهان در ساختار بارگذاری منابع وبسایت است و نیاز به بررسی عمیقتر نحوه آدرسدهی و تنظیمات پروژه دارد.
بیشتر بخوانید:
دلایل بروز ارور content mixed پس از نصب ssl
قبل از بررسی این موضوع، لازم است بدانیم خطای SSL چیست و چرا میتواند بر امنیت و عملکرد سایت تاثیر بگذارد. پس از نصب موفق گواهینامه SSL و فعالسازی پروتکل HTTPS بر روی وبسایت، انتظار میرود که تمام دادهها بهصورت رمزنگاری شده بین مرورگر و سرور رد و بدل شوند.
با این حال، در بسیاری از موارد، حتی پس از نصب SSL هم ارور Mixed Content یا محتوای ترکیبی ظاهر میشود.
این ارور همانطور که گفتیم به دلیل بارگذاری منابعی در صفحه وب رخ میدهد که همچنان از طریق HTTP بارگیری میشوند. در حالی که صفحه اصلی با HTTPS فراخوانی شده است.
این مغایرت امنیتی میتواند منجر به هشدارهای مرورگر و در برخی موارد، جلوگیری از بارگذاری صحیح برخی عناصر صفحه شود.
آدرس دهی سخت کد شده (Hardcoded URLs)
در بسیاری از پروژههای وب، آدرس منابع (مانند تصاویر، اسکریپتها، فایلهای CSS، فونتها و ویدیوها) به صورت مستقیم و با استفاده از پروتکل HTTP در کد HTML، CSS یا JavaScript نوشته شدند.
پس از فعالسازی SSL، اگر این آدرسها بهروزرسانی نشوند و همچنان از نسخهی بدون رمزنگاری (HTTP) استفاده کنند، مرورگر تشخیص میدهد که صفحهی HTTPS سعی دارد محتوایی غیرامن را بارگذاری کند و هشدار Mixed Content را نمایش میدهد.
این مشکل بیشتر در وبسایت هایی که با CMSهای رایجی مثل وردپرس ساخته شدند شایع است. زیرا قالب ها و افزونههای وردپرسی ممکن است حاوی لینک های سخت کد شده ای باشند که نیاز به تصحیح دارند.
استفاده از منابع خارجی بدون HTTPS
در بسیاری از سایتها، منابع خارجی از سایت های شخص ثالث بارگذاری میشوند. مثلا فونت های گوگل، کتابخانه های jQuery از CDNهای عمومی یا ویدیوهایی از سایت هایی مانند Vimeo یا DailyMotion.
اگر این منابع خارجی از آدرس هایی استفاده کنند که از پروتکل HTTPS پشتیبانی نمیکنند یا بهصورت پیشفرض از HTTP استفاده میکنند، بارگذاری آنها باعث ایجاد ارور محتوای ترکیبی خواهد شد.
علاوه بر این، برخی CDNهای قدیمی یا منابعی که بهروزرسانی نشدهاند، ممکن است همچنان از HTTP استفاده کنند. جایگزین نکردن این منابع یا اصلاح نکردن مسیر آنها، علاوه بر تداوم ارور Mixed Content، در وردپرس میتواند باعث اختلال در ساخت پوشهها و فایلها شده و در نهایت نیاز به رفع ارور unable to create directory در وردپرس را ایجاد کند.
بیشتر بخوانید:
تنظیمات ناقص یا ناهماهنگ CMS یا فریم ورک
در مواردی که از سیستمهای مدیریت محتوا (CMS) یا فریمورکهای توسعه استفاده میشود، ممکن است تنظیمات داخلی همچنان بهگونهای باشد که URLهای اصلی سایت یا مسیر منابع را با HTTP نگه دارند.
برای مثال، در وردپرس اگر آدرس “Site URL” و “WordPress Address” در تنظیمات به HTTP باقی مانده باشند، سایت ممکن است همچنان منابع را بهصورت نا امن بارگیری کند.
این مشکل در فریمورکهایی مانند Laravel، Django یا Symfony نیز ممکن است با تنظیمات نادرست یا کششدهی URLها رخ دهد. اصلاح تنظیمات پیکربندی، بهروزرسانی پایگاه داده و پاکسازی کش میتواند برای حل این مشکل لازم باشد.
کش مرورگر یا کش سرور
یکی دیگر از دلایلی که ممکن است پس از نصب SSL همچنان ارور Mixed Content دیده شود، کش شدن نسخهی قدیمی منابع توسط مرورگر یا سیستم کش سرور (مانند Varnish Redis یا افزونههای کش وردپرس) است.
در این حالت، با وجود اینکه نسخهی امن (HTTPS) منابع در دسترس است، مرورگر یا سرور همچنان نسخهی قدیمی و ناامن را بارگذاری میکند. این مسئله میتواند باعث بروز خطاهای ترکیبی، کاهش سرعت سایت و حتی ایجاد مشکلاتی مشابه با ارور کش برگه شناسایی نشد و زمان پاسخ سرور کند است شود.
برای رفع این مشکل، باید کش مرورگر پاکسازی شود و در صورت استفاده از سیستمهای کشینگ سمت سرور، آنها نیز بازسازی یا تخلیه شوند تا نسخهی جدید بارگیری گردد.
اسکریپت های جاوا اسکریپت تولید کننده محتوا
فکر کردید دلایل بروز خطای content mixes تمام شده؟ اشتباه میکردید! چون اسکریپت های جاوا اسکریپت هم دلیل دیگری هستند که منجر به بروز این خطا میشوند.
این اسکریپت ها به صورت داینامیک محتوایی تولید میکنند که شامل لینکها یا منابع است. اگر این اسکریپتها از HTTP استفاده کنند یا پروتکل را مشخص نکنند، مرورگر ممکن است محتوا را نا امن تلقی کند.
برای مثال، اگر از متدهایی مانند document.write() یا innerHTML برای درج منابع استفاده شود و URLها به صورت دستی وارد شده باشند، ارور Mixed Content رخ خواهد داد.
پس بررسی کدهای جاوا اسکریپت سمت کلاینت و اطمینان از استفاده از HTTPS یا پروتکل نسبی (مانند //example.com) میتواند به حل این مشکل کمک کند.
افزونهها یا ابزارهای شخص ثالث
بعضی از افزونهها، ویجتها یا اسکریپت های شخص ثالث مانند چت آنلاین، فرمهای تماس یا ابزارهای تحلیل آمار هم هستند که ممکن است منابعی را از دامنه های نا امن بارگذاری کنند.
یعنی حتی اگر وب سایت شما به طور کامل با HTTPS کار کند، یا اگر افزونهای به صورت پیش فرض منابعی با HTTP را بارگذاری کند، موجب Mixed Content خواهد شد.
پس برای حل این مشکل، باید افزونهها را بهروزرسانی کرده یا جایگزینهای سازگار با HTTPS آنها را انتخاب کرد.
دلایل ایجاد ارور Mixed Content بعد از نصب SSL
| علت بروز خطا | توضیح | محل بررسی |
|---|---|---|
| لینکهای قدیمی HTTP | لینکهای ذخیرهشده قبل از نصب SSL | دیتابیس، محتوا |
| قالب سایت | بارگذاری فایلها با HTTP | فایلهای قالب |
| افزونهها | استفاده از منابع ناامن | تنظیمات افزونه |
| منابع خارجی | CDN یا فونت ناامن | سورس صفحه |
نحوه رفع و حل ارور content mixed پس از نصب ssl
ابتدا باید مشخص شود کدام منابع باعث ایجاد ارور شدند. این کار با استفاده از ابزار DevTools مرورگر (تب Console یا Network) انجام میشود.
در این بخش، مرورگر دقیقا نشان میدهد که کدام فایل (عکس، اسکریپت، CSS، ویدیو، iframe و…) از طریق HTTP بارگذاری شده است.
در کدهای HTML ، CSS یا جاوا اسکریپت اگر لینکهایی وجود دارد که بهصورت http:// نوشته شدند، باید به https:// تغییر داده شوند.
اگر سایت شما از CMS استفاده میکنند (مثل وردپرس، جوملا، دروپال)، احتمالا نیاز به به روز رسانی مستقیم در دیتابیس پیدا خواهید کرد.
در بسیاری از موارد هم به جای استفاده از http:// یا https://، میتوان از URL نسبی یا مستقل از پروتکل استفاده کرد.
بروز رسانی آدرس اصلی سایت در تنظیمات
در CMSهایی مثل وردپرس، شما باید آدرس اصلی سایت (site URL) را به نسخه HTTPS تغییر دهید.
این کار از بخش تنظیمات یا مستقیم از دیتابیس (wp_options) انجام میشود. همچنین باید قالبها و افزونهها بررسی شوند تا منابع آنها از آدرس نا امن استفاده نکرده باشند.
بازنویسی آدرس ها در پایگاه داده
اگر تعداد زیادی محتوا با لینکهای HTTP در دیتابیس ثبت شده باشد (مثلا نوشته ها، صفحات یا محتوای پویا)، استفاده از ابزارهایی مانند Search & Replace برای تغییر انبوه URLها به HTTPS ضروری است.
در وردپرس میتوان از افزونههایی مانند “Better Search Replace” یا ابزارهای CLI مانند WP-CLI هم استفاده کرد.
بررسی افزونه ها، ویجت ها و فایلهای خارجی
افزونههای شخص ثالث، ابزارهای چت، آنالیتیکس، نقشهها و دیگر سرویسهایی که از منابع خارجی استفاده میکنند نیز باید بررسی شوند. در صورتی که این منابع از HTTPS پشتیبانی نمیکنند، باید حذف یا با نسخه امن جایگزین شوند.
پاکسازی کش و CDN
پس از اعمال تغییرات، باید کش مرورگر، کش سرور و هر سیستم CDN (مثل Cloudflare، BunnyCDN یا AWS CloudFront) که محتوا را ذخیره کردند، پاکسازی (purge) شوند تا نسخه بروزرسانی شده سایت بارگذاری شود.
بسیاری از مشکلات Mixed Content ناشی از کش منابع قدیمی است.
تنظیم ریدایرکت اجباری به HTTPS
برای اطمینان از اینکه کاربران همیشه نسخه امن سایت را مشاهده میکنند، باید ریدایرکت دائمی از HTTP به HTTPS انجام شود.
این کار معمولا از طریق فایل .htaccess، تنظیمات سرور (مانند Nginx یا Apache)، یا در تنظیمات CDN انجام میشود.
استفاده از HSTS (در صورت نیاز)
برای جلوگیری از هرگونه دسترسی آینده به نسخه HTTP سایت، میتوان از هدر HSTS استفاده کرد که به مرورگر دستور میدهد همیشه از HTTPS استفاده کند.
جلوگیری از بروز دوباره ارور Mixed Content
بعد از رفع ارور Mixed Content، مهمترین نکته این است که از تکرار دوباره آن جلوگیری شود. رعایت چند اصل ساده اما مهم میتواند سایت شما را همیشه در حالت امن (HTTPS) نگه دارد.
۱. رعایت اصول لینک دهی داخلی و خارجی
همیشه در لینکدهیهای داخلی سایت (لینک صفحات، تصاویر، فایلها و اسکریپتها) از آدرسهای https:// استفاده کنید.
همچنین هنگام افزودن لینکهای خارجی، مطمئن شوید سایتی که به آن لینک میدهید از SSL معتبر برخوردار است.
۲. استفاده از منابع امن (HTTPS)
در هنگام استفاده از:
- فونتها
- فایلهای CSS و JavaScript
- تصاویر و ویدیوها
- کتابخانههای خارجی (CDNها)
حتما بررسی کنید که منبع موردنظر از پروتکل HTTPS پشتیبانی میکند. استفاده از منابع ناامن یکی از اصلیترین دلایل بازگشت ارور Mixed Content است.
۳. بررسی دوره ای سایت و صفحات مهم
بهصورت دورهای سایت خود را بررسی کنید، مخصوصا بعد از:
- نصب یا بهروزرسانی افزونهها
- تغییر قالب سایت
- افزودن محتوای جدید
میتوانید با استفاده از کنسول مرورگر (Console) یا ابزارهای تست SSL، صفحات مهم سایت را از نظر وجود محتوای ناامن بررسی کنید. این کار کمک میکند قبل از ایجاد مشکلات جدیتر مانند ارور permission denied در وردپرس، ایرادات را شناسایی کنید.
۴. تنظیم ریدایرکت صحیح HTTP به HTTPS
اطمینان حاصل کنید که تمام درخواستهای HTTP به HTTPS ریدایرکت میشوند. این کار هم امنیت سایت را افزایش میدهد و هم از ایجاد لینکهای ناامن جلوگیری میکند.
۵. دقت در محتوای کپی شده
اگر محتوایی را از سایتهای دیگر کپی میکنید (متن، تصویر یا کد)، حتما لینکها و منابع آن را بررسی و در صورت نیاز به HTTPS تغییر دهید.
۶. بررسی لینک های ذخیره شده در دیتابیس سایت
حتی اگر لینکهای جدید را بهدرستی با HTTPS وارد کنید، ممکن است لینکهای قدیمی HTTP هنوز در دیتابیس سایت ذخیره شده باشند. این موضوع مخصوصا در سایتهایی که قبل از نصب SSL فعال بودهاند بسیار رایج است.
بهتر است هر از گاهی دیتابیس سایت را بررسی کرده و لینکهای HTTP را به HTTPS اصلاح کنید تا از بروز دوباره ارور Mixed Content جلوگیری شود.
۷. دقت در تنظیمات قالب و افزونه ها
برخی قالبها و افزونهها بهصورت پیشفرض آدرس فایلها را با HTTP بارگذاری میکنند. بعد از نصب یا آپدیت قالب و افزونهها، تنظیمات آنها را بررسی کنید و مطمئن شوید:
- آدرس فایلها بهصورت امن بارگذاری میشوند
- گزینههای مربوط به SSL یا HTTPS فعال هستند
نادیده گرفتن این بخش میتواند باعث بازگشت خطا، حتی پس از رفع کامل آن شود.
رفع ارور content mixed با تیم حرفه ای دولوپ
رفع ارور Mixed Content در یک وبسایت فعال با SSL، اگر توسط یک تیم توسعه دهنده حرفهای مانند تیم تخصصی دولوپ انجام شود، میتواند بهصورت ساختاری، دقیق و پایدار صورت گیرد.
در این فرآیند، تیم ما بسته به تکنولوژی های استفاده شده در سایت شما، ابزارهای مدیریت محتوا، فریم ورکها و معماری سایتتان این کار را انجام میدهد.
دولوپ مرجعی برای رفع سریع خطا با مناسب ترین راهکارها است.
برای دریافت مشاوره خدمات با ما ارتباط بگیرید
نتیجه گیری از ارور content mixed پس از نصب ssl چیست
ارور Mixed Content پس از نصب SSL نشانه ای از ناسازگاری میان پیاده سازی لایه امن و نحوه بارگذاری منابع وبسایت است. این مشکل اگرچه در ظاهر ساده به نظر میرسد، اما میتواند ریشه در ساختار کد، تنظیمات سرور، افزونهها یا حتی محتوای پایگاهداده داشته باشد.
حل کامل آن هم نیازمند بررسی دقیق و اصلاح همه مسیرهای بارگذاری منابع به صورت یکپارچه با HTTPS است. توجه به جزئیاتی مانند کش، CDN و استفاده از URLهای مستقل از پروتکل در کنار تستهای نهایی دقیق، از جمله اقدامات ضروری برای تثبیت امنیت واقعی وبسایت در برابر تهدیدات محتوای ناامن محسوب میشود.
سوالات مربوط به ارور Mixed Content
ارور Mixed Content دقیقا چیست؟
ارور Mixed Content زمانی رخ میدهد که یک صفحهی HTTPS منابعی مانند عکس، اسکریپت یا استایل را از آدرس HTTP بارگذاری کند که باعث ایجاد ناامنی در ارتباط میشود.
چرا ارور Mixed Content خطرناک است؟
چون باعث میشود محتوای صفحه از یک منبع ناامن بارگذاری شود که میتواند زمینهساز حملات امنیتی مثل سرقت داده یا تزریق کد مخرب شود.