Чи безпечно використовувати @символ як частину користувача? Наприклад, можлива 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 ви не повинні використовувати його (без кодування), якщо це не за прямим призначенням.