Что такое URL

Ответ

URL (Uniform Resource Locator) — это строка, указывающая адрес ресурса в интернете. Состоит из нескольких частей:

https://www.example.com:8080/path/to/resource?query=param#fragment
  1. Протокол (https://) — способ доступа (HTTP, HTTPS, FTP и т.д.)
  2. Домен (www.example.com) — имя сервера
  3. Порт (:8080) — необязательный, по умолчанию 80 (HTTP) или 443 (HTTPS)
  4. Путь (/path/to/resource) — расположение ресурса на сервере
  5. Параметры (?query=param) — данные для сервера
  6. Якорь (#fragment) — ссылка на часть страницы (обрабатывается браузером)

Пример создания URL в JavaScript:

const url = new URL('https://example.com/search');
url.searchParams.set('q', 'test');
console.log(url.href); // "https://example.com/search?q=test"

URL кодируется согласно стандарту RFC 3986, пробелы заменяются на %20 и т.д.

Ответ 18+ 🔞

А, ну это же про эти ваши интернет-адреса, которые в строке браузера светятся! URL, блядь, Uniform Resource Locator, звучит как заклинание, но на деле — просто бумажка с координатами, где искать картинку с котиками или видос про то, как мужик упал с табуретки.

Вот смотри, разберём эту хуйню по косточкам, как нормальные люди:

https://www.example.com:8080/path/to/resource?query=param#fragment

Выглядит страшно, а на деле — проще пареной репы, если не тупить.

  1. Протокол (https://) — это как способ доехать: на метро (http://), на такси (https://, оно зашифрованное, круче) или на гужевом транспорте (ftp://). Главное — договориться с сервером на одном языке, а то он тебя не поймёт, пидарас шерстяной.

  2. Домен (www.example.com) — это, блядь, адрес дома. www — часто подъезд, example — улица, com — город, район такой. Вместо com может быть ru, org или ещё какая хитрая жопа.

  3. Порт (:8080) — это конкретная дверь в этом доме. Обычно её не пишут, потому что все знают: для http дверь №80, для https — №443. А если написали :8080 — значит, хозяин живёт в чёрном входе, с подворотни. Необязательная хуйня, но бывает.

  4. Путь (/path/to/resource) — это уже внутри дома: заходишь в подъезд (/), поднимаешься на третий этаж (/path/), ищешь квартиру 25 (/to/resource). Где лежит тот самый файлик, который тебе нужен.

  5. Параметры (?query=param) — а это, сука, самое интересное! Ты стучишься в дверь и говоришь: «Открой, я с пивом!». ? — это стук, query=param — это «я с пивом». Можно несколько: ?search=котики&sort=by_laughs. Сервер читает это и думает: «Ага, чувак хочет котиков, отсортированных по смешности». Без этого — просто отдаст что попало.

  6. Якорь (#fragment) — это уже внутри квартиры. Открыл дверь, зашёл, и сразу: «Покажи мне не весь диван, а ту самую пятно от вина на правой подушке!». Браузер сам скроллит страницу до нужного места. Серверу на этот #fragment обычно похуй.

А вот, кстати, как эту магию в JavaScript вызвать, чтобы не писать всё руками, как лох:

const url = new URL('https://example.com/search');
url.searchParams.set('q', 'test');
console.log(url.href); // "https://example.com/search?q=test"

Видишь? Создал объект, тыкнул методом .set() в параметры — и всё, красота, блядь. Автоматом тебе и знак вопроса подставится, и всё закодируется, если надо.

Кстати, да, кодирование! Потому что в URL нельзя просто так взять и написать пробел или кириллицу. Это ж протокол, ёпта, старый и строгий. Поэтому пробел становится %20, а «Привет» превращается в %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82. Стандарт RFC 3986, вся эта хуйня. Браузеры и new URL() делают это за тебя, но знать-то надо, а то однажды получишь ошибку, обосрёшься и будешь думать, что интернет сломался.

Вот и вся наука. Не так страшен чёрт, как его малюют. Главное — понять, что это просто структурированная строка, как адрес на конверте, только для компьютеров.