Telegram Group & Telegram Channel
🗺 Вебушка без адреса: как устроен URI 🗺

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


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

https://[email protected]: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
🔥20🤩7



group-telegram.com/Analyst_Boost/113
Create:
Last Update:

🗺 Вебушка без адреса: как устроен URI 🗺

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

RFC 3986 — Синтаксис URI
RFC 7230 §2.7 — URI в HTTP-запросах
RFC 9110 §4.1 — Семантика HTTP


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

https://[email protected]: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

BY Analyst Boost. Никита Харичкин




Share with your friend now:
group-telegram.com/Analyst_Boost/113

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Stocks closed in the red Friday as investors weighed upbeat remarks from Russian President Vladimir Putin about diplomatic discussions with Ukraine against a weaker-than-expected print on U.S. consumer sentiment. Again, in contrast to Facebook, Google and Twitter, Telegram's founder Pavel Durov runs his company in relative secrecy from Dubai. This provided opportunity to their linked entities to offload their shares at higher prices and make significant profits at the cost of unsuspecting retail investors. "Markets were cheering this economic recovery and return to strong economic growth, but the cheers will turn to tears if the inflation outbreak pushes businesses and consumers to the brink of recession," he added. The channel appears to be part of the broader information war that has developed following Russia's invasion of Ukraine. The Kremlin has paid Russian TikTok influencers to push propaganda, according to a Vice News investigation, while ProPublica found that fake Russian fact check videos had been viewed over a million times on Telegram.
from us


Telegram Analyst Boost. Никита Харичкин
FROM American