Hỗ trợ top-level domain (tên miền cấp cao nhất) .localhost
Top-level domain (TLD - tên miền cấp cao nhất) .localhost được định nghĩa trong RFC2606 và RFC6761 là dành riêng cho mục đích kiểm thử và có sẵn cho người dùng sử dụng cục bộ như bất kỳ tên miền nào khác. Điều này có nghĩa là việc sử dụng một tên như myapp.localhost cục bộ để phân giải thành địa chỉ IP loopback (vòng lại) là được phép và mong đợi theo các RFC này.
Các trình duyệt evergreen (thường xuyên cập nhật) hiện đại đã tự động phân giải bất kỳ tên *.localhost nào thành địa chỉ IP loopback (127.0.0.1/::1), thực sự biến chúng thành bí danh cho bất kỳ dịch vụ nào đang được host tại localhost trên máy cục bộ. Bất kỳ dịch vụ nào đáp ứng http://localhost:6789 cũng sẽ đáp ứng http://anything-here.localhost:6789, giả sử không có xác minh hostname cụ thể nào hoặc enforcement thêm được thực hiện bởi dịch vụ.
Việc có các ứng dụng khác nhau chạy cục bộ có thể phân giải được qua các tên khác nhau cho phép tách biệt tốt hơn một số tài sản website liên kết với tên miền (ví dụ: cookies) và giúp dễ dàng xác định ứng dụng nào bạn đang duyệt qua tên hiển thị trên thanh địa chỉ trình duyệt. Hỗ trợ cho .localhost TLD được giới thiệu trong ASP.NET Core trong .NET 10.
Hỗ trợ Kestrel cho .localhost
HTTP server tích hợp của ASP.NET Core, Kestrel, xử lý đúng bất kỳ tên *.localhost nào được đặt qua các cơ chế cấu hình endpoint được hỗ trợ như địa chỉ loopback cục bộ và bind (liên kết) vào nó thay vì tất cả các địa chỉ bên ngoài (tức là bind vào 127.0.0.1/::1 thay vì 0.0.0.0/::). Điều này bao gồm thuộc tính "applicationUrl" trong launch profiles được cấu hình trong tệp *launchSettings.json*, và biến môi trường ASPNETCORE_URLS. Khi được cấu hình để lắng nghe trên địa chỉ .localhost, Kestrel ghi lại một thông điệp thông tin cho cả địa chỉ .localhost và localhost, để làm rõ rằng cả hai tên đều có thể được sử dụng.
Tương thích trình duyệt
Trong khi hầu hết các trình duyệt evergreen hiện đại tự động phân giải tên *.localhost thành địa chỉ loopback cục bộ, Safari trên macOS không hỗ trợ tính năng này. Trong Safari, bạn nên sử dụng tên localhost thông thường thay vì tên miền *.localhost.
Một số ứng dụng client khác ngoài Safari và các trình duyệt web evergreen xử lý tên *.localhost như các tên miền thông thường và cố gắng phân giải chúng qua DNS stack tương ứng. Nếu cấu hình DNS của bạn không phân giải tên *.localhost thành địa chỉ, chúng sẽ không thể kết nối. Bạn có thể tiếp tục sử dụng tên localhost thông thường để truy cập ứng dụng khi không ở trong trình duyệt web.
Chứng chỉ phát triển HTTPS
Chứng chỉ phát triển HTTPS của ASP.NET Core (bao gồm lệnh dotnet dev-certs https) có giá trị để sử dụng với tên miền *.dev.localhost.
Chứng chỉ liệt kê tên *.dev.localhost như một Subject Alternative Name (SAN - tên thay thế chủ thể) thay vì *.localhost vì việc sử dụng chứng chỉ wildcard cho tên miền cấp cao nhất là không hợp lệ.
Tích hợp project template (mẫu dự án)
Các project templates cho ASP.NET Core Empty (web) và Blazor Web App (blazor) có một tùy chọn cấu hình dự án được tạo để sử dụng hậu tố tên miền .dev.localhost. Tùy chọn kết hợp hậu tố miền với tên dự án để cho phép ứng dụng được duyệt tại địa chỉ như https://myapp.dev.localhost:5036:
$ dotnet new web -n MyApp --localhost-tld
The template "ASP.NET Core Empty" was created successfully.
Processing post-creation actions...
Restoring D:\src\MyApp\MyApp.csproj:
Restore succeeded.
$ cd .\MyApp\
$ dotnet run --launch-profile https
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://myapp.dev.localhost:7099
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7099/
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://myapp.dev.localhost:5036
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5036/
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: D:\src\local\10.0.1xx\MyApp