Sử dụng một @
biểu tượng như một phần của người dùng có an toàn không? Ví dụ, một URL có thể sẽ là http://example.com/@dave
.
Ý tưởng là, ngày nay, người dùng thường được gọi là "@user", vậy tại sao không tạo trang người dùng "@username"?
Sử dụng một @
biểu tượng như một phần của người dùng có an toàn không? Ví dụ, một URL có thể sẽ là http://example.com/@dave
.
Ý tưởng là, ngày nay, người dùng thường được gọi là "@user", vậy tại sao không tạo trang người dùng "@username"?
Câu trả lời:
Bạn có thể sử dụng @
ký tự trong các đường dẫn HTTP URI nếu bạn mã hóa phần trăm dưới dạng %40
.
Nhiều trình duyệt sẽ hiển thị nó vẫn như vậy @
, nhưng ví dụ: khi bạn sao chép và dán URI vào tài liệu văn bản, nó sẽ như vậy %40
.
Thay vì mã hóa phần trăm, bạn có thể sử dụng @
trực tiếp trong đường dẫn HTTP URI.
Xem cú pháp cho đường dẫn của một URI. Khoản liên quan khác nhau sang một bên, con đường có thể bao gồm các ký tự trong segment
, segment-nz
hoặc segment-nz-nc
thiết lập. segment
và segment-nz
bao gồm các ký tự từ pchar
tập hợp, được định nghĩa là:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
Như bạn có thể thấy, @
nó được liệt kê một cách rõ ràng.
Các segment-nz-nc
hợp này cũng liệt kê @
nhân vật một cách rõ ràng:
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
Vì vậy, một URI HTTP như thế này hoàn toàn hợp lệ:
http://example.com/@dave
Đây là một trang Wikipedia mẫu:
http://en.wikipedia.org/wiki/%22@%22_%28album%29
Như bạn có thể thấy, "
, (
, và )
nhân vật trăm mã hóa, nhưng @
và _
được sử dụng trực tiếp.
@
trong các URL nữa, nhưng các URL hồ sơ cũ (?) Vẫn hoạt động: ví dụ với mã hóa phần trăm @
( không hoạt động!) So với ví dụ sử dụng @
trực tiếp (không làm việc!) .
@
trong trường hợp của Twitter. Liên kết bên trong của họ tham khảo các url mà không @
mặc dù: twitter.com/@stackexchange
@
không phải là ưa thổ lộ . Vì vậy người tiêu dùng không được cho rằng %40
và @
tương đương.
Many browsers would display it still as @, but e.g. when you copy-and-paste the URI into a text document, it will be %40.
Điều đó không đúng với Chrome.
Bạn có thể sử dụng @ -symbol trong URL không? - Có, bạn có thể!
Lưu ý rằng ký tự @, giá trị thập lục phân 40, giá trị thập phân 64, là các ký tự dành riêng cho URI. Nó được sử dụng cho những thứ như địa chỉ email trong mailto:
URI, chẳng hạnmailto:username@somewhere.foo
và để chuyển thông tin tên người dùng và mật khẩu trên URI (đó là một ý tưởng tồi, nhưng có thể):http://username:password@somewhere.foo
Nếu bạn muốn một URL có ký hiệu @ trong đường dẫn, bạn cần mã hóa nó, với cái gọi là " mã hóa URL ". Ví dụ như thế này:http://somewhere.foo/profile/username%40somewhere.foo
Tất cả các trình duyệt hiện đại sẽ hiển thị điều này dưới dạng http://somewhere.foo/profile/username@somewhere.foo và sẽ chuyển đổi bất kỳ thứ gì được nhập bằng @ -đăng ký thành %40
, vì vậy rất dễ sử dụng.
Nhiều khung công tác web cũng sẽ giúp bạn tự động hoặc với chức năng trợ giúp, chuyển đổi sang và từ URL được mã hóa URL.
Vì vậy, tóm lại: Có, bạn có thể sử dụng ký tự @ trong URL, nhưng bạn phải đảm bảo rằng nó được mã hóa, vì bạn không thể sử dụng ký tự @ .
@
nhân vật không "cần" được mã hóa trong một phần con đường của một url ( greenbytes.de/tech/webdav/rfc3986.html#path )
Trong RFC các ký tự sau:
! * '(); : @ & = + $, /? % # []
được bảo lưu và:
Mục đích của các ký tự dành riêng là cung cấp một tập hợp các ký tự phân định có thể phân biệt được với các dữ liệu khác trong một URI.
Vì vậy không nên sử dụng các ký tự này mà không cần mã hóa.
Cơ bản là không.
@
là một ký tự dành riêng và chỉ nên được sử dụng cho mục đích đã định của nó.
Xem: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ và http://www.ietf.org/rfc/rfc3986.txt
Nó có thể được sử dụng mã hóa, nhưng tôi không nghĩ đó là những gì bạn đang hỏi.
Rõ ràng các trình duyệt hiện đại sẽ xử lý điều này. Tuy nhiên, bạn đã hỏi liệu điều này có an toàn không và theo thông số kỹ thuật của RFC, bạn không nên sử dụng nó (chưa được mã hóa) trừ khi nó dành cho mục đích dự định.