TGViewer
Analyst Boost. Никита Харичкин Analyst Boost. Никита Харичкин @analyst_boost · 5.54K subscribers
Post #113 2.89K
🗺 Вебушка без адреса: как устроен URI 🗺

✏️ Участвую в конкурсе «Продолжи мысль» от @systems_education.
И на собесах, и в работе приходится синтезировать адреса для вызовов по HTTP. Я видал всякой дичи, поэтому решил разобраться, что же на самом деле говорят RFC — первоисточники от в т. ч. Роя Филдинга (автора REST) и Тима Бернерса-Ли (автора всея тыртырнета):
RFC 3986 — Синтаксис URI
RFC 7230 §2.7 — URI в HTTP-запросах
RFC 9110 §4.1 — Семантика HTTP


👆 Схему привёл на картинке выше (в любимом PlantUML). Разберём её по примеру:

https://kharichkin@kabanych.ru:8080/shops/orders?order_id=58719&urgent=true#confirmation

schemehttps, ftp, mailto, tel... Обязательный протокол. Следите за тем, чтобы у вас не было http без S-как-доллар.
// + authority — блок, содержащий:
Логин — kharichkin@. Редкость, да и логин:пароль в URI — это ад, не делайте так
Хостkabanych.ru. Обязателен, это и есть "бренд" ресурса)
Порт:8080. Обычно опускают на проде. Актуальнее для тестовых стендов.
path/shops/orders — обязательный путь к ресурсу. Главная страница — это обычно просто хотя бы "/".
?query?order_id=... — опциональные параметры. Можно много, но не стоит. Если вложенные и перс. данные — передавайте в теле.
#fragment#confirmation — якорь. Не уходит на сервер, работает только на клиенте. Пример:
https://en.wikipedia.org/wiki/Fallout_(video_game)#Story


📬 Как это выглядит в HTTP-запросах
GET /inbox/messages?id=4321 HTTP/1.1
Host: kabanych.ru:8080

👉 Относительный URI + заголовок Host

GET http://kabanych.ru:8080/api/profile?user=kharichkin HTTP/1.1

👉 Абсолютный URI, чаще используется в прокси, middleware и кешах. Напоминаю не передавать перс. данные в строке. Даже в https при шифрованной передаче с SSL/TLS, они попадут как минимум в историю браузера, что небезопасно.

🧠 На десерт
— Длина строки (не) бесконечна. Вики до сих пор пишет про 2к символов, но это ссылка на ныне мёртвый IE. RFC на это всё равно, это ограничение из мира самих браузеров. Хром мне так и не удалось сломать гигантской URL'ой, например.

— В URI (без хитростей с доменами .рф) базово нельзя кириллицу, пробелы, &, #, ? и пр.
Нужно URL-кодирование. Вот почему ссылки из Wiki обычно такие громоздкие, например:
ü → %C3%BC, пробел → %20.
https://ru.wikipedia.org/wiki/Rasterschl%C3%BCssel_44


#продолжи_мысль_SE | Analyst Boost
  • 🔥 22
  • 🤩 7
More from @analyst_boost
  1. Sep 13, 2026🥩Мясные прокси в нейрослопном пинг понг шоу🥩 Как архитектор, я вынужден быть на пути сог…
  2. Aug 11, 2026😘 Монополия на накрутку 😘 Устали от выдумывания достижений в процентах, RPS’ах и миллион…
  3. Jul 23, 2026🐑 Бараны в волчьей шкуре 🐑 Я писал о кризисе как для соискателей, так и для курсоводов.…
  4. Jul 14, 2026Post #150
  5. Jul 2, 2026Tech Analyst Meetup. Неизданное Так, мы не закончили. Сложно впихнуть в один митап все сам…
  6. Jul 2, 2026📉 Отрицательное расширение рынка 📉 Статистики не будет, но вброшу пару чисел и прокоммен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →