استفاده از http://localhost برای توسعه محلی در بیشتر مواقع خوب است، مگر در موارد خاص. این پست توضیح میدهد که چه زمانی نیاز دارید سایت توسعه محلی خود را با HTTPS اجرا کنید.
همچنین ببینید: نحوه استفاده از HTTPS برای توسعه محلی .
در این پست، عبارات مربوط به localhost برای 127.0.0.1 و [::1] نیز معتبر هستند، زیرا هر دو آدرس کامپیوتر محلی را توصیف میکنند که به آن "آدرس loopback" نیز گفته میشود. همچنین، برای ساده نگه داشتن مطالب، شماره پورت مشخص نشده است. بنابراین وقتی http://localhost میبینید، آن را به صورت http://localhost:{PORT} یا http://127.0.0.1:{PORT} بخوانید.
خلاصه
هنگام توسعه محلی، به طور پیشفرض از http://localhost استفاده کنید. Service Workers، Web Authentication API و موارد دیگر کار خواهند کرد. با این حال، در موارد زیر، برای توسعه محلی به HTTPS نیاز خواهید داشت:
- اشکالزدایی مشکلات محتوای ترکیبی
- استفاده از HTTP/2 و نسخههای جدیدتر
- استفاده از کتابخانهها یا APIهای شخص ثالث که به HTTPS نیاز دارند
استفاده از نام میزبان سفارشی

چه زمانی از HTTPS برای توسعه محلی استفاده کنیم؟
✨ این تمام چیزی است که باید بدانید. اگر به جزئیات بیشتر علاقهمند هستید، به خواندن ادامه دهید!
چرا سایت توسعه شما باید ایمن رفتار کند؟
برای جلوگیری از بروز مشکلات غیرمنتظره، میخواهید سایت توسعه محلی شما تا حد امکان مانند وبسایت اصلی شما رفتار کند. بنابراین، اگر وبسایت اصلی شما از HTTPS استفاده میکند، میخواهید سایت توسعه محلی شما مانند یک سایت HTTPS رفتار کند.
به طور پیشفرض از http://localhost استفاده کنید
مرورگرها با http://localhost به شیوهای خاص رفتار میکنند: اگرچه HTTP است، اما عمدتاً مانند یک سایت HTTPS رفتار میکند .
در http://localhost ، سرویس ورکرها، APIهای حسگر، APIهای احراز هویت، پرداختها و سایر ویژگیهایی که نیاز به تضمینهای امنیتی خاصی دارند ، پشتیبانی میشوند و دقیقاً مانند یک سایت HTTPS رفتار میکنند.
چه زمانی از HTTPS برای توسعه محلی استفاده کنیم؟
ممکن است با موارد خاصی مواجه شوید که http://localhost مانند یک سایت HTTPS رفتار نکند —یا ممکن است بخواهید از یک نام سایت سفارشی استفاده کنید که http://localhost نباشد.
در موارد زیر باید از HTTPS برای توسعه محلی استفاده کنید:
- شما باید مشکلی را که فقط در یک وبسایت HTTPS رخ میدهد و در یک سایت HTTP، حتی
http://localhost، رخ نمیدهد، مانند مشکل محتوای ترکیبی ، به صورت محلی اشکالزدایی کنید. - شما باید به صورت محلی رفتاری خاص برای HTTP/2 یا جدیدتر را آزمایش یا بازتولید کنید. برای مثال، اگر نیاز به آزمایش عملکرد بارگذاری در HTTP/2 یا جدیدتر دارید. HTTP/2 ناامن یا جدیدتر حتی در
localhostپشتیبانی نمیشود. - شما باید کتابخانهها یا APIهای شخص ثالثی که به HTTPS نیاز دارند (مثلاً OAuth) را به صورت محلی آزمایش کنید.
شما از
localhostاستفاده نمیکنید، بلکه از یک نام میزبان سفارشی برای توسعه محلی استفاده میکنید، برای مثالmysite.example. معمولاً این بدان معناست که شما فایل میزبانهای محلی خود را بازنویسی کردهاید:
ویرایش فایل hosts برای اضافه کردن یک نام میزبان سفارشی. در این حالت، کروم، اج، سافاری و فایرفاکس به طور پیشفرض
mysite.exampleرا امن نمیدانند ، حتی اگر یک سایت محلی باشد. بنابراین مانند یک سایت HTTPS رفتار نخواهد کرد.موارد دیگر! این لیست کامل نیست، اما اگر با موردی مواجه شدید که در اینجا ذکر نشده است، متوجه خواهید شد: همه چیز در
http://localhostبا مشکل مواجه خواهد شد، یا کاملاً مانند سایت اصلی شما رفتار نخواهد کرد. 🙃
در همه این موارد، شما باید از HTTPS برای توسعه محلی استفاده کنید.
نحوه استفاده از HTTPS برای توسعه محلی
اگر برای توسعه محلی نیاز به استفاده از HTTPS دارید، به بخش نحوه استفاده از HTTPS برای توسعه محلی مراجعه کنید.
نکاتی در صورت استفاده از نام میزبان سفارشی
اگر از یک نام میزبان سفارشی استفاده میکنید، مثلاً فایل میزبانهای خود را ویرایش میکنید:
- از یک نام میزبان ساده مانند
mysiteاستفاده نکنید، زیرا اگر یک دامنه سطح بالا (TLD) با همین نام (mysite) وجود داشته باشد، با مشکل مواجه خواهید شد. و این چندان بعید نیست: در سال ۲۰۲۰، بیش از ۱۵۰۰ TLD وجود دارد و این فهرست در حال افزایش است. نامهایcoffee،museum،travelو بسیاری از شرکتهای بزرگ (شاید حتی شرکتی که در آن کار میکنید!) TLD هستند. فهرست کامل را اینجا ببینید . - فقط از دامنههایی استفاده کنید که متعلق به شما هستند یا برای این منظور رزرو شدهاند. اگر دامنهای برای خودتان ندارید، میتوانید از
testیاlocalhost(mysite.localhost) استفاده کنید.testدر مرورگرها رفتار خاصی ندارد، اماlocalhostدارد: کروم و اج ازhttp://<name>.localhostبه صورت پیشفرض پشتیبانی میکنند و وقتی localhost پشتیبانی شود، به طور ایمن رفتار خواهد کرد. آن را امتحان کنید: هر سایتی را روی localhost اجرا کنید و در کروم یا اج بهhttp://<whatever name you like>.localhost:<your port>دسترسی پیدا کنید. این ممکن است به زودی در فایرفاکس و سافاری نیز امکانپذیر شود. دلیل اینکه میتوانید این کار را انجام دهید (داشتن زیردامنههایی مانندmysite.localhost) این است کهlocalhostفقط یک نام میزبان نیست: بلکه یک TLD کامل مانندcomنیز هست.
بیشتر بدانید
با تشکر فراوان از همه داوران - به ویژه رایان اسلیوی، فیلیپو والسوردا، میلیکا میهالیا، روآن مروود و جیک آرچیبالد - به خاطر مشارکتها و بازخوردهایشان. 🙌
تصویر قهرمان از @moses_lee در Unsplash ، ویرایش شده.