Fix lỗi: This site can't be reached trên Chrome
Gần đây rất nhiều trường hợp gặp phải lỗi sau đây khi chạy ứng dụng web đang được phát triển ở môi trường local: This site can't be reached This site on the company, organization or school intranet has the same URL as an external website. Try contacting your system administrator. ERR_ICANN_NAME_ ...
Gần đây rất nhiều trường hợp gặp phải lỗi sau đây khi chạy ứng dụng web đang được phát triển ở môi trường local:
This site can't be reached This site on the company, organization or school intranet has the same URL as an external website. Try contacting your system administrator. ERR_ICANN_NAME_COLLISION
Nguyên nhân của lỗi trên là bởi vì trong phiên bản Chrome mới đây thì các tên miền kết thúc bởi .dev sẽ được chuyển tiếp về sử dụng giao thức https thay vì giao thức ít bảo mật hơn http.
Tại Sao Chrome Chuyển TiếpTên Miền .dev Về HTTPS
Nguyên nhân của việc làm này là bởi vì khác với các trình duyệt khác, Chrome được phát triển (và sở hữu) bởi Google và Google là công ty sở hữu quản lý .dev gTLD hay generic Top Level Domain. Như các bạn biết thì điều này có nghĩa là Google có quyền quản lý tất các các tiên miền kết thúc bằng .dev.
Nguyên nhân của việc chuyển tiếp này được cho là Google các tiên miền .dev nên được đối xử như một tên miền nghiêm túc như các tiên miền khác thay vì chỉ nên được các lập trình vien sử dụng nó như một tên miền phát triển ứng dụng.
Hoặc cũng có thể hiểu theo cách khác là bởi vì Google muốn đưa ra một thông điệp rằng .dev gTLD là tài sản của hãng này.
Lỗi Gây Ra Từ Việc Chuyển Tiếp Này
Từ trước đến nay một tập quán dù không nói ra nhưng hầu như tất cả các developer đều hiểu đó là tên miền .dev được sử dụng để sử dụng phát triển ứng dụng ở môi trường localhost. Việc thiết lập routing domain này về máy local thường được tiến hành thông qua việc thêm một dòng chỉ thị vào tập tin hosts trên máy tính. Một ví dụ như sau:
my-app.dev 127.0.0.1
Tuy nhiên thì các lập trình viên sử dụng giao thức http cho tên miền .dev thay vì https. Điều này một phần là bởi vì chúng ta không cần tới bảo mật SSL ở môi trường local, một phần khác cũng là do hạn chế trong kiến thức của đa số lập trìh viên về việc thiết lập https nên chún ta thường làm biếng việc thêm SSL ở môi trường local. Do đó khi việc chuyển tiếp về giao thức https này diễn ra thì đa số các ứng dụng ở local đều tèo dù khi bật Developer Tools của Chrome cũng không thấy có bất cứ lỗi nào khác để có thể debug.
Cách Khắc Phục Lỗi
Tới đây câu hỏi đặt ra đó là có cách nào để khắc phục lỗi trên mà không cần chuyển qua trình duyệt khác hay không?
Câu trả lời là có!
Hai giải pháp hiện nay đang được đề xuất để khắc phục lỗi chuyển tiếp về https của Chrome như sau:
- Sử dụng tên miền .localhost hoặc .test để thay cho .dev
- Thiết lập SSL cho Apache ở môi trường localhost
Trong đó cách sử dụng tên miền .localhost thay cho .dev đang nhận được nhiều ý kiến phản hồi tích cực từ cộng đồng lập trình. Ngoài ra thì cách này cũng chỉ tốn một chút ít thời gian thay vì phải bỏ ra tìm hiểu về cách thiết lập SSL ở môi trường localhost.