Чи безпечно використовувати @
символ як частину користувача? Наприклад, можлива URL-адреса http://example.com/@dave
.
Ідея полягає в тому, що в наш час користувачів зазвичай називають "@user", то чому б не зробити сторінку користувача "@username"?
Чи безпечно використовувати @
символ як частину користувача? Наприклад, можлива URL-адреса http://example.com/@dave
.
Ідея полягає в тому, що в наш час користувачів зазвичай називають "@user", то чому б не зробити сторінку користувача "@username"?
Відповіді:
Ви можете використовувати @
символ у шляхах URI HTTP, якщо відсотково кодуєте його як %40
.
Багато браузерів відображатимуть його як і раніше @
, але, наприклад, коли ви копіюєте та вставляєте URI в текстовий документ, це буде %40
.
Замість того, щоб кодувати його у відсотках, ви можете використовувати @
безпосередньо в шляху HTTP URI.
Див. Синтаксис шляху URI. Різні незв'язані положення в стороні, шлях може складатися з символів в segment
, segment-nz
або segment-nz-nc
наборі. segment
і segment-nz
складаються з символів з pchar
набору, який визначається як:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
Як бачите, перелік @
вказано явно.
У segment-nz-nc
наборі також @
явно вказаний символ:
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
Отже, такий HTTP-ідентифікатор URI є повністю дійсним:
http://example.com/@dave
Ось приклад сторінки Вікіпедії:
http://en.wikipedia.org/wiki/%22@%22_%28album%29
Як ви можете бачити, "
, (
і )
символи відсотків закодованих, але @
і _
використовуються безпосередньо.
@
URL-адреси, але старі (?) URL-адреси профілю все ще працюють: приклад із кодованим відсотком @
( не працює!) Проти приклад використання @
безпосередньо (робить робота!) .
@
Twitter або без нього. Їх внутрішні посилання посилаються на URL-адресу, @
незважаючи на це: twitter.com/@stackexchange
@
НЕ беззаперечні . Таким чином , споживачі не повинні припускати , що %40
і @
еквівалентні.
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.
Це не вірно для Chrome.
Чи можете ви використовувати @ -символ в URL-адресі? - Так, ти можеш!
Зауважте, що @ -символ, шістнадцяткове значення 40, десяткове значення 64, є зарезервованими символами для URI. Він використовується для таких речей, як адреси електронної пошти в mailto:
URI, наприклад, mailto:username@somewhere.foo
а також для передачі інформації про ім'я користувача та пароль в URI (що погана ідея, але можливо):http://username:password@somewhere.foo
Якщо ви хочете URL-адресу, яка має @ -символ у шляху, вам потрібно його кодувати, з так званим " URL-кодуванням ". Наприклад, ось так:http://somewhere.foo/profile/username%40somewhere.foo
Усі сучасні браузери відображатимуть це як http://somewhere.foo/profile/username@somewhere.foo і перетворюватимуть будь-який введений @ -sign в %40
, тому він простий у використанні.
Багато веб-фреймворків також допоможуть вам автоматично або за допомогою допоміжних функцій перетворити на URL-кодовані URL-адреси та з них.
Отже, підсумовуючи: Так, ви можете використовувати @ -символ в URL-адресі, але ви повинні переконатися, що він закодований, оскільки ви не можете використовувати @ -символ .
@
символи не "потрібно" кодувати в частині шляху URL-адреси ( greenbytes.de/tech/webdav/rfc3986.html#path )
У RFC такі символи:
! * '(); : @ & = + $, /? % # []
зарезервовані та:
Призначення зарезервованих символів - забезпечити набір символів, що розмежовують, які можна відрізнити від інших даних в URI.
Тому не рекомендується використовувати ці символи без кодування.
В основному ні.
@
є зарезервованим символом і повинен використовуватися лише за прямим призначенням.
Див .: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ та http://www.ietf.org/rfc/rfc3986.txt
Його можна використовувати закодовано, але я не думаю, що це те, про що ви просили.
Мабуть, сучасні браузери з цим впораються. Однак ви запитали, чи це безпечно, і відповідно до специфікацій RFC ви не повинні використовувати його (без кодування), якщо це не за прямим призначенням.