Tôi có thể sử dụng ký hiệu at (@) bên trong URL không?


90

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"?


2
"người dùng thường được gọi là @user" - XEM? Nhưng có, bạn có thể sử dụng @ trong một URL.
Lennart Regebro

1
Tôi nghĩ không có gì sai khi sử dụng @ trong url trừ khi nó được mã hóa url đúng cách.
Praveen

4
@ user1671639: Tôi nghĩ ý bạn là "miễn là nó được mã hóa url đúng cách".
Lennart Regebro

3
Chỉ cần nhận thấy bản đồ google hiện đang sử dụng @ trong các URL của nó: google.com/maps/@0,0,2z
Zv_oDD

Câu trả lời:


126

Được mã hóa theo phần trăm…

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.

… Nhưng cũng trực tiếp

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-nzhoặc segment-nz-ncthiết lập. segmentsegment-nz bao gồm các ký tự từ pchartậ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

Thí dụ

Đây là một trang Wikipedia mẫu:

  • liên kết
  • sao chép và dán: 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 @_được sử dụng trực tiếp.


Tin tốt! Nhưng sau đó, tại sao Twitter không làm điều này?
Augustin Riedinger,

1
@AugustinRiedinger: Bạn có thể cung cấp URL mẫu không? Tôi không sử dụng Twitter và từ những gì tôi thấy họ không sử dụng @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!) .
unor

Hấp dẫn! Thật vậy, hoạt động có hoặc không 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
Augustin Riedinger

1
@RalphCallaway: AFAIK chỉ ưa thổ lộ nhân vật tương đương với hình thức phần trăm mã hóa của họ , nhưng @không phải là ưa thổ lộ . Vì vậy người tiêu dùng không được cho rằng %40@tương đương.
unor

1
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.
Defozo

42

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ự @ .


+1 hoàn hảo. Thay vì tiếp tục trên lý thuyết tốt hơn để thử. Đây là điều tôi muốn nói, cảm ơn vì đã đưa ra câu trả lời hay.
Praveen

4
Mặc dù mã hóa không phải là lời khuyên xấu, @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 )
brianreavis

11

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.


-3

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/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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.