Nếu muốn định nghĩa Well-Known URI
(mnot.net)- Khi client đã biết sẵn một site và cần tìm thông tin cho toàn bộ site một cách hiệu quả, Well-Known URI là lựa chọn phù hợp nhất
- Đặt chính sách ở một vị trí trung tâm như
robots.txtcó thể giảm việc phải kiểm tra lặp lại, nhưng cũng có thể dùng để mở ra tương tác trên toàn site nhưchange-password - Nếu một giao thức có thể truyền URL thực tế mà vẫn dùng Well-Known URI, dịch vụ và site sẽ bị ràng buộc 1:1, khiến việc triển khai và định tuyến trở nên cứng nhắc
- Khi áp dụng cho cơ chế khám phá hoặc metadata nội dung, cần xem xét trước cấu trúc vận hành như hostname khởi đầu, vị trí tra cứu, chuyển hướng và site có nhiều publisher
- Nếu muốn chuyển từ đường dẫn cố định ở root hiện có, cần một kế hoạch chuyển đổi; đồng thời nên chỉ rõ cả các scheme ngoài
httpvàhttpsđể tăng khả năng đăng ký thành công
Những trường hợp Well-Known URI thực sự phù hợp
- Mark Nottingham, một trong các tác giả của Well-Known URI specification và là Designated Expert của registry, đã chia sẻ các tiêu chí thực tế về thời điểm nên dùng Well-Known URI
- Các tiêu chí này không phải tất cả đều là yêu cầu để đăng ký, mà gần với thực hành tốt hơn
- Vị trí Well-Known phù hợp khi client đã biết site đó và cần khám phá hoặc tương tác với điều gì đó trên toàn bộ site
- Ở đây, site theo nghĩa kỹ thuật là origin, tức bộ ba
(scheme, host, port)
- Ở đây, site theo nghĩa kỹ thuật là origin, tức bộ ba
- robots.txt đã tồn tại trước RFC, nhưng là một trong những lý do chính khiến không gian Well-Known được dành riêng
- Crawler cần biết chính sách truy cập của site
- Đặt chính sách ở một vị trí trung tâm giúp không phải kiểm tra header và nội dung của mọi response
- Vị trí Well-Known không nhất thiết chỉ dùng để chứa chính sách
- Nếu đó là một cơ chế mà client đã biết site và cần tìm hiểu hoặc tương tác trên phạm vi toàn site, nó có thể là ứng viên phù hợp
- Vị trí Well-Known
change-passwordcho phép client thay đổi mật khẩu của site
Khi nó trở thành công cụ không phù hợp
- Một số thiết kế chỉ định vị trí Well-Known không phải vì vấn đề thực tế, mà vì trông như nên làm vậy
- Việc có một mục trong không gian đăng ký không đồng nghĩa với tính chính đáng hay mức độ chấp nhận sẽ tự động đi kèm
- Vị trí Well-Known giải quyết một bài toán cụ thể: “client biết site và có nhu cầu ở phạm vi toàn site”
- Nếu giao thức không có bài toán đó, việc đăng ký có thể tạo ra vấn đề mới và không dẫn đến mức độ chấp nhận như kỳ vọng
- Một số đề xuất thực chất dùng vị trí Well-Known như trình rút gọn URL
- Giao thức không truyền toàn bộ URL mà chỉ truyền site liên quan
- Vị trí Well-Known sẽ điền phần đường dẫn còn lại
- Mẫu này cố định dịch vụ và site vào quan hệ 1:1
- Nếu triển khai cần nhiều dịch vụ, sẽ phải tạo thêm các site khác
- Đồng thời cũng cần một cách riêng để đưa người dùng tới đúng site phù hợp
- Nếu giao thức thực sự chỉ có thể truyền hostname, việc dùng vị trí Well-Known có thể là hợp lý
- Nếu có thể dùng URL thực tế, tốt hơn là không nên dùng vị trí Well-Known; chọn nó chỉ vì tiện lợi hoặc trông chính thức sẽ khiến việc triển khai cứng nhắc một cách không cần thiết
Những cạm bẫy trong cơ chế khám phá
- Nhiều giao thức muốn dùng vị trí Well-Known làm cơ chế khám phá với giả định rằng “người dùng đã biết site”
- Nhưng trên thực tế, phạm vi tương tác hiện tại của người dùng và nơi việc khám phá diễn ra có thể không trùng khớp
- Nếu client bắt đầu từ
login.example.com, sẽ nảy sinh câu hỏi là nên tìm vị trí Well-Known ở site đó hay ởexample.com - Cũng cần quyết định có nên đi theo chuyển hướng từ bên này sang bên kia hay không
- Có thể cũng không rõ publisher phải cung cấp vị trí Well-Known ở site nào để đảm bảo khả năng tương tác
- Nếu client bắt đầu từ
- Vấn đề này đặc biệt quan trọng khi giao thức không thực sự xử lý chính website, mà dùng HTTP cho mục đích khác
- Có thể muốn chỉ định rằng vị trí Well-Known của tên miền có thể đăng ký phải nằm ở apex, nhưng trong một số môi trường điều đó có thể gây khó khăn về vận hành
- Với nhóm giao thức này, cần cân nhắc cùng lúc việc đang khám phá cái gì và người dùng bắt đầu từ đâu
- Cần xác định cách tìm đúng hostname một cách ổn định mà không đặt ra quá nhiều giả định về kiến trúc web
Những đánh đổi khi dùng cho metadata nội dung
- Một số giao thức muốn dùng vị trí Well-Known để tìm hiểu nội dung của site
/robots.txthoạt động theo cách này, nhưng mẫu đó không dễ áp dụng cho mọi loại metadata nội dung- Nhiều site đại diện cho nhiều publisher
- Ví dụ là quy ước
/~username/trước đây
- Ví dụ là quy ước
- Khi đặt metadata nội dung ở vị trí trung tâm, sẽ phát sinh hai vấn đề
- Cơ chế đó có thể gần như không dùng được trên thực tế đối với từng người dùng riêng lẻ
- Quản trị viên có thể phải xây dựng hạ tầng phức tạp để hỗ trợ và giám sát quyền kiểm soát của người dùng
- Những kiểu triển khai như vậy cho thấy sự đánh đổi giữa tính tiện lợi và độ chi tiết
- Có thể sẽ cần cơ chế metadata song song trong HTTP response header hoặc ngay trong chính nội dung
- Cũng cần làm rõ cách các phương thức gắn metadata khác nhau tương tác với nhau
- Không phải là không thể dùng vị trí Well-Known cho metadata nội dung, nhưng có thể sẽ cần nhiều công sức hơn rất nhiều so với dự kiến
- Các giao thức dùng vị trí Well-Known cho metadata tài nguyên cần tính tới sự đa dạng trong cấu trúc site trên web
Những điểm cần cân nhắc khi đăng ký và chuyển đổi
- Đã có những đề xuất định nghĩa sẵn một vị trí cố định ở root
- Trường hợp này giống như
/robots.txt, tức là chỉ biết đến vị trí Well-Known sau đó
- Trường hợp này giống như
- Trong những trường hợp như vậy, cần có kế hoạch chuyển đổi cho các triển khai hiện có
- Người đề xuất thường có xu hướng tập trung quá mức vào nền tảng triển khai hiện tại
- Nếu có một kế hoạch chuyển đổi hợp lý trong thời gian phù hợp, có thể quản lý được việc chuyển sang vị trí Well-Known
- Nhiều đề xuất ngầm giả định URL
httpvàhttps - Vị trí Well-Known cũng áp dụng cho các URL scheme khác, vì vậy nên liệt kê rõ ràng các scheme liên quan
- Vị trí Well-Known cần được đăng ký
- Liên kết đó có hướng dẫn về thời điểm nên đăng ký và cách chọn tên
- Khác với phần lời khuyên ở trên, hướng dẫn đăng ký này thực sự ảnh hưởng đến khả năng đăng ký thành công
1 bình luận
Bình luận trên Hacker News
Ước gì người ta làm theo cách này thay vì cứ tiếp tục tạo các tiêu chuẩn mới trong root namespace. Ví dụ làm tôi nghĩ đến llms.txt
Mong là thôi đừng làm bẩn root của domain nữa
https://llmstxt.org/
Tôi không đồng ý. Bài này rốt cuộc cũng chẳng giúp ích mấy. Nội dung gần như không có gì, chỉ nói những điều quá hiển nhiên
Nếu không có ví dụ nào dẫn đến khuyến nghị thực tế, thì chuyên môn mà tác giả nêu ra cũng không có nhiều giá trị
https://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol#Save_418_movement
~userBài này có thể khiến những người đó dùng giải pháp tốt hơn. Dù vậy, nếu họ vẫn chắc chắn cần một well-known URL, bài cũng có cung cấp link đến quy trình đăng ký
robots.txt, thì đừng chỉ đặt bừa ở đó, mà phải cho biết nó nằm ở đâuKhông hiểu sao lại cụ thể đến vậy. Sao không đặt một cây liên kết tổng quát hơn thay vì
password-reset?Việc xác minh domain của Discord cũng có thể dùng danh sách động dưới
domain-verifications, trông như một sự lãng phí thời gian. Nếu là nhu cầu của tôi thì chắc tôi sẽ tự định nghĩa đặc tả riêng bên ngoài well-knownEndpoint well-known
password-resetđược dùng để trình quản lý mật khẩu hiển thị nút "Change password..." trong UI và dẫn thẳng đến trang đổi mật khẩu được ghi trong tệp well-known đódiscord domain verificationthì bản thân TXT record đã là danh sách các mục động sẵn rồi, nên đơn giản hơn một cấu trúc riêngÝ là chỉ cần duyệt danh sách và so phần đầu của từng giá trị với chuỗi cần tìm để tìm
discord domain verificationthì dễ hơn nhiềuVí dụ, TXT record của
ycombinator.comcó đồng thời các giá trị nhưopenai-domain-verification=...,anthropic-domain-verification-...,google-site-verification=...,apple-domain-verification=...,dropbox-domain-verification=...,rippling-domain-verification=...discord domain verificationlà chuyện của Discord. Nó không có trong registry của IANA: https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtmlVề ý biến
password-resetthành một cây liên kết tổng quát hơn, tôi đã trả lời chi tiết hơn ở thread cùng cấp này: https://news.ycombinator.com/item?id=48596286Dù là
.well-known, DNS record hay DNS over HTTP, tôi nghĩ điều quan trọng là làm cho việc khám phá tự động trở nên khả thi dựa trên độ tin cậy gắn với domainCloudflare có vẻ đã thêm khá nhiều khả năng quan sát cho mảng này vào sản phẩm của họ, và tôi cũng đang tìm hiểu: https://instagrate-me.sudoscience.dev/
Càng nhiều ứng dụng kiểu agent thì số dịch vụ cần những thứ này và lượng cần cho mỗi tổ chức có lẽ đều sẽ tăng.
auth.mdcũng có vẻ là một ví dụ gần đây dùng.well-known“Trang web này cần một trình duyệt hiện đại hơn để hoạt động an toàn. Hãy nâng cấp trình duyệt của bạn.”
Một phương án khác là có thể làm được mà không cần SNI
https://web.archive.org/web/20260619061625if_/https://mnot.net/blog/2026/well_known_uris
Nên nó rất tốt
Registry
change-passwordcó thực sự được dùng không? Tôi còn không biết bot có dùng hay khôngTrên các site của tôi, tôi chưa từng thấy bot nào kiểm tra URL
.well-known/change-password. Làm nơi để đặt cấu hình công khai thì ổn, nhưng có vẻ không phải là cơ chế khám pháTính năng này dựa trên
.well-known/change-password.well-knownban đầu khởi đầu khá gọn gàng, nhưng âm thầm biến thành ngăn kéo lặt vặt của web root.security.txt, ACME,app-site-associationvà nhiều thứ khác vẫn đang tiếp tục tăng lênCó vẻ mọi người thường bỏ qua việc một domain có thể có nhiều mục well-known
Tiêu đề nói về URI, nhưng bài lại chỉ bàn đến URL, vốn chỉ là một loại của URI
Nhưng rốt cuộc những URI đó thực sự well-known đến mức nào? :-\
.well-knownmà không thấy nổi một cái nàoTrước đây tôi từng đọc một cái khi làm việc với GitHub OIDC, và lúc đó nó khá hữu ích
Không hiểu sao tài liệu kỹ thuật lại có thể giải thích khái niệm rất sâu bằng cả đống chữ mà lại không đưa nổi một ví dụ nào. Đây cũng không phải lần đầu tôi gặp kiểu này
Nói nghiêm túc thì cái tên này tự mâu thuẫn.
/index.htmlđúng nghĩa là một URL quen thuộc và hầu hết lập trình viên web đều biết. Nhưng việc tạo ra cả đống URL có ý nghĩa được định nghĩa sẵn rồi dán nhãn “well-known” cho chúng không khiến chúng tự nhiên trở nên nổi tiếng thật