Українська

Інструменти розробника · URL енкодер & декодер

Анатомія URL: схема, авторитет, шлях, запиту та фрагмент

· Підземелля

Опубліковано ToolAcre · Редакція журналу

url-структура веб-стандарти розробник-tools

П'ять URL компоненти, позначені своїми глухими
Головна ToolAcre векторна ілюстрація

Кожне рішення, яке залежить від якої частини URL символ сидить в. Цей пост іменує п'ять компонентів з RFC 3986, показує, що кожний емітер означає і чому фрагмент ніколи не досягає сервера.

Чому те ж саме # відмінно в одному місці і знищує посилання в іншому — питання компонента, а не питання характеру

Хірургічний характер (#) URL в залежності від того, де з'являється. Всередині значення рядка запиту як ? Пошук:%23sharp, він повинен бути закодований до %23 бути безпечним. Наприкінці URL як https://example.com/page#section, роззначає фрагмент глухим і все після нього фрагмент. Один символ, два контексти, два різні значення. Саме тому кодування рішень залежить від того, яка частина URL ви працюєте з.

Також є подвійна природа. Всередині шляху або значення запиту вона повинна бути зашифрована як %3F з'являтися як дані. Як лінійний характер між шляхами та рядком запитів, це структурний синтаксис. Розуміння цих п'яти компонентів - scheme, авторитет, шлях, запиту та фрагмента - це основа правильної URL обробка.

П'ять компонентів: схема, авторитет, шлях, запит, фрагмент — і глушники, які відокремлюють їх

RFC 3986 формально визначає URL-адреси, що мають п'ять компонентів: схеми, повноваження, шлях, запит та фрагмент, відокремлені певними емітерами. Схема надходить спочатку, далі ://, потім влада, потім /, потім шлях, потім ?, потім запит, потім #, потім фрагмент. Не всі компоненти з'являються в кожному URL. Мінімальний URL може мати тільки схему і шлях, як «пошта:[email protected]". Повне URL включає в себе всі п'ять.

Кожен компонент має власні правила синтаксису. Зарезервована колонка в схемі, в'язка в доріжці, амперс і в запиті. Зашифровані символи потребують кодування, коли вони з'являються як дані: slash в значеннях шляху стає %2F.

Всередині влади — адміністратор, хост і порт, і чому @ і : зарезервовані там

Компонент органу містить мережеву адресу ресурсу: ім'я користувача, пароль, ім'я користувача та порт. Формат [userinfo@]host[:port]. Відокремлений користувачем та хост відокремлюється @; хост та порт відокремлюються :. Цей @ і : символи зарезервовані в органі, щоб скасувати ці субкомпоненти. Якщо у вас є ім'я користувача, що містить символ @, він повинен бути відсотково зашифрований до того, як ви його замовляєте. Наприклад, "[email protected]:password" як ім'я користувача стане "користувачем%40email.com:password" до фіналу @.

Ім'я хостингу може бути зареєстрованим доменом example.com, IP-адреса в пунктовому десятку, як 192.0.2.1, або IPv6 адреса, загорнуті у дужках, як [::::1до Порт необов'язково; якщо в'язаний, схема визначає за замовчуванням (80 для http, 443 за посиланням. Частково використовується в сучасних URL-адресах, але залишається частиною синтаксису.

Відрізки шляху та значення / — ієрархічна структура та розв’язок

Шлях являє собою послідовність відрізків, відокремлених за допомогою пересувних зітків. Шлях /a/b/c має три сегменти: a, b і c. Кожен сегмент може містити неодержувані символи, процентовані символи, або певні зарезервовані символи, які безпечні в цьому контексті. Зіткнення в межах сегмента необхідно зашифрувати як %2F уникати заплутання з роздільними сепараторами. Шлях є ієрархічним; він має на увазі, що місце розташування, потім/b більш специфічний.

Доріжки також підтримують спеціальні сегменти точки: одинарний точка (.) означає "поточний каталог" і два точки (..) означає "парентний каталог". Шлях як ../../etc/passwd вирішує вгору. Сучасні URL-адреси та HTTP не використовуючи ці, але вони існують в синтаксису. Відрізок шляху, що містить літрову крапку або подвійну дупу, повинні бути відсотково зашифровані, якщо не призначено літрове дозування.

Запитання та фрагмент — ключові конвенції, і чому фрагмент залишається в браузері

Переробний рядок слідувати шляху і починається з ?. Традиційно це серія ключових=значення пар, відокремлених і, хоча синтаксис фактично неструктурований — будь-який може піти в запиту. Якщо у вас є значення, що містить & або =, ці символи повинні бути процентовані, тому вони не помилкові для емітерів. Переробки надсилаються на сервер; сервер вирішує, що робити з ним.

Фрагмент слідує запиту та починається з #. Все після # є фрагментом, і він ніколи не досягає сервера. У браузері направляє фрагмент локально, як правило, стрибати на названий анкер або вказати стан в межах однієї сторінки. Оскільки фрагмент ніколи не досягає сервера URL з різним фрагментом вважається точкою до того ж ресурсу.

Ведуться роботи: виявлення довгого реального світу URL — маркування кожного компонента та кожного глухого

Зайдіть URL "https://user:[email protected]:8080/path/to/page?search=hello&sort=date#results". Схема за посиланням. Користувач:[email protected]:8080, розбити на користувачаinfo (користувач:pass), хост (example.com) і порт (8080). Шлях - /path/to/page, з відрізками шляху, на сторінку. Запит - пошук: hello&sort=date, що містить два параметри. Результати фрагмента. Увійти URL в URL encoder & decoder, щоб побачити, як етикетки інструментів та коди кожного компонента.

Якщо пошук, що міститься і, як ?search=R&D, він стає ?search=R%26D, коли належним чином зашифровано. Найсвіжіші символи не створюють візуальних кордонів в тексті, тому ретельне кодування і декодування є абсолютно важливим для коректного оформлення пар.

Що це не криється — відносна роздільна здатність та спеціальні схеми, такі як mailto: та дані:

Відносні посилання як "../page" або "?query=value" діють всередині HTML і інтерпретовано відносно поточного документа, але вони мають власні правила роздільної здатності. Спеціальні схеми, такі як mailto:, дані:, і файл: дотримуватися абсолютно різних правил і не стандартних абсолютних URL.

Цей пост зосереджений тільки на стандартному абсолютному URL структура продемонструвала інспектор. Відносні посилання потребують бази URL перед їх компонентами можна інтерпретувати, в той час як схеми, такі як mailto і дані, які не діляться однаковою формою та формою. Зберігаючи ті випадки, відокремлені, запобігає вивченню правила HTTPS адреса від нанесених сліпо до синтаксису з різними емітерами, кроками дозволу або транспортною поведінкою.

Приймати: дізнатися компонент перед кодуванням — як працює компонент URL енкодер & decoder однозначно-цінний і повноадресний режим на цій структурі

Ви визначаєте, які символи потребують розжарювання і які безпечні. Зіткнення є літровим синтаксисом в шляху, тому зітхання в ціні повинна бути %2F. У запитах і = повинні бути закодовані, якщо вони з'являються в значеннях. Про нас URL encoder & decoder має два режими: "компонент" для кодування єдиного значення, і "перемикання адреси" для повного URL. Використовуйте режим компонента при побудові URL-адрес за допомогою опалювальних деталей; використовуйте весь режим для перевірки існуючих URL.

Знаючи п'ять компонентів і їх дельіметри дозволяє вибрати правильно кожен раз, коли ви зіткнулися з завданням кодування.