URL¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:url предоставляет утилиты для разрешения и разбора URL. Доступ к нему можно получить, используя:
1 | |
1 | |
Строки URL и объекты URL¶
Строка URL - это структурированная строка, содержащая несколько значимых компонентов. При разборе возвращается объект URL, содержащий свойства для каждого из этих компонентов.
Модуль node:url предоставляет два API для работы с URL: устаревший API, специфичный для Node.js, и более новый API, реализующий тот же WHATWG URL Standard, который используется веб-браузерами.
Сравнение между WHATWG и унаследованным API представлено ниже. Над URL 'https://user:[email protected]:8080/p/a/t/h?query=string#hash' показаны свойства объекта, возвращаемого традиционным url.parse(). Ниже показаны свойства объекта WHATWG URL.
Свойство origin WHATWG URL включает protocol и host, но не username или password.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Разбор строки URL с помощью WHATWG API:
1 2 3 | |
Разбор строки URL с помощью унаследованного API:
1 2 3 4 | |
1 2 3 4 | |
Конструирование URL из составных частей и получение сконструированной строки¶
Можно построить URL WHATWG из составных частей, используя либо параметры свойств, либо литеральную строку шаблона:
1 2 3 4 | |
1 2 3 4 5 6 | |
Чтобы получить построенную строку URL, используйте аксессор свойства href:
1 | |
WHATWG URL API¶
Класс: URL¶
Совместимый с браузером класс URL, реализованный в соответствии со стандартом URL WHATWG. Примеры разобранных URL можно найти в самом Стандарте. Класс URL также доступен в глобальном объекте.
В соответствии с традициями браузеров, все свойства объектов URL реализованы как геттеры и сеттеры прототипа класса, а не как свойства данных самого объекта. Таким образом, в отличие от legacy urlObjects, использование ключевого слова delete для любых свойств объектов URL (например, delete myURL.protocol, delete myURL.pathname и т.д.) не имеет никакого эффекта, но все равно вернет true.
новый URL(input[, base])¶
input<string>Абсолютный или относительный входной URL для разбора. Еслиinputотносительный, то требуетсяbase. Еслиinputабсолютный, тоbaseигнорируется. Еслиinputне является строкой, то сначала она преобразуется в строку.base<string>Базовый URL для разрешения, еслиinputне является абсолютным. Еслиbaseне является строкой, то сначала преобразуется в строку.
Создает новый объект URL, анализируя input относительно base. Если base передана как строка, она будет разобрана эквивалентно new URL(base).
1 2 | |
Конструктор URL доступен как свойство глобального объекта. Он также может быть импортирован из встроенного модуля url:
1 2 | |
1 | |
Ошибка TypeError будет выброшена, если input или base не являются корректными URL. Обратите внимание, что будет предпринята попытка преобразовать заданные значения в строки. Например:
1 2 3 4 | |
Символы юникода, появляющиеся в имени хоста input, будут автоматически преобразованы в ASCII с помощью алгоритма Punycode.
1 2 | |
Эта возможность доступна только в том случае, если исполняемый файл node был скомпилирован с включенным ICU. В противном случае доменные имена передаются без изменений.
В случаях, когда заранее неизвестно, является ли input абсолютным URL и предоставляется base, рекомендуется проверить, что origin объекта URL является тем, что ожидается.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
url.hash¶
Получает и задает фрагмент части URL.
1 2 3 4 5 6 7 | |
Недопустимые символы URL, включенные в значение, присвоенное свойству hash, кодируются percent-encoded. Выбор символов для кодирования может несколько отличаться от того, что выдают методы url.parse() и url.format().
url.host¶
Получает и устанавливает часть URL, содержащую хост.
1 2 3 4 5 6 7 | |
Неверные значения хоста, присвоенные свойству host, игнорируются.
url.hostname¶
Получает и устанавливает часть имени хоста в URL. Ключевое различие между url.host и url.hostname заключается в том, что url.hostname не включает порт.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Неверные значения имени хоста, присвоенные свойству hostname, игнорируются.
url.href¶
Получает и устанавливает сериализованный URL.
1 2 3 4 5 6 7 | |
Получение значения свойства href эквивалентно вызову url.toString().
Установка значения этого свойства на новое значение эквивалентна созданию нового объекта URL с помощью new URL(value). Каждое из свойств объекта URL будет изменено.
Если значение, присвоенное свойству href, не является действительным URL, будет выдана ошибка TypeError.
url.origin¶
Получает доступную только для чтения сериализацию происхождения URL.
1 2 3 | |
1 2 3 4 5 6 | |
url.password¶
Получает и устанавливает часть URL, содержащую пароль.
1 2 3 4 5 6 7 | |
Недопустимые символы URL, включенные в значение, присвоенное свойству password, кодируются percent-encoded. Выбор символов для кодирования может несколько отличаться от того, что выдают методы url.parse() и url.format().
url.pathname¶
Получает и устанавливает часть пути URL.
1 2 3 4 5 6 7 | |
Недопустимые символы URL, включенные в значение, присвоенное свойству pathname, percent-encoded. Выбор символов для кодирования может несколько отличаться от того, что выдают методы url.parse() и url.format().
url.port¶
Получает и устанавливает порт части URL.
Значение порта может быть числом или строкой, содержащей число в диапазоне от 0 до 65535 (включительно). Установка значения порта по умолчанию для объектов URL, заданных protocol, приведет к тому, что значение port станет пустой строкой ('').
Значение порта может быть пустой строкой, в этом случае порт зависит от протокола/схемы:
| протокол | port |
|---|---|
| "ftp" | 21 |
| "файл" | |
| "http" | 80 |
| "https" | 443 |
| "ws" | 80 |
| "wss" | 443 |
При присвоении значения порту, значение сначала преобразуется в строку с помощью .toString().
Если эта строка недействительна, но начинается с числа, то ведущее число присваивается port. Если число находится вне обозначенного выше диапазона, оно игнорируется.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | |
Числа, содержащие десятичную точку, такие как числа с плавающей точкой или числа в научной нотации, не являются исключением из этого правила. Ведущие числа до десятичной точки будут установлены в качестве порта URL, если они действительны:
1 2 3 | |
url.protocol¶
Получает и устанавливает протокольную часть URL.
1 2 3 4 5 6 7 | |
Неверные значения протокола URL, присвоенные свойству protocol, игнорируются.
Специальные схемы¶
В WHATWG URL Standard несколько схем протоколов URL считаются специальными с точки зрения того, как они анализируются и сериализуются. Когда URL анализируется с использованием одного из этих специальных протоколов, свойство url.protocol может быть изменено на другой специальный протокол, но не может быть изменено на неспециальный протокол, и наоборот.
Например, изменение http на https работает:
1 2 3 4 | |
Однако переход от протокола http к гипотетическому протоколу fish не приводит к этому, поскольку новый протокол не является специальным.
1 2 3 4 | |
Аналогично, переход от неспециального протокола к специальному также не разрешен:
1 2 3 4 | |
Согласно стандарту URL WHATWG, специальными схемами протоколов являются ftp, file, http, https, ws и wss.
url.search¶
Получает и задает сериализованный запрос части URL.
1 2 3 4 5 6 7 | |
Любые недопустимые символы URL, появляющиеся в значении, присвоенном свойству search, будут percent-encoded. Выбор символов для кодирования может несколько отличаться от того, что выдают методы url.parse() и url.format().
url.searchParams¶
- {URLSearchParams}
Получает объект URLSearchParams, представляющий параметры запроса URL. Это свойство доступно только для чтения, но объект URLSearchParams, который оно предоставляет, может быть использован для изменения экземпляра URL; чтобы заменить все параметры запроса URL, используйте сеттер url.search. Подробнее см. документацию по URLSearchParams.
Будьте осторожны при использовании .searchParams для изменения URL, поскольку, согласно спецификации WHATWG, объект URLSearchParams использует различные правила для определения того, какие символы следует кодировать. Например, объект URL не будет кодировать в процентах символ ASCII тильда (~), в то время как URLSearchParams всегда будет его кодировать:
1 2 3 4 5 6 7 8 | |
url.username¶
Получает и устанавливает часть имени пользователя URL.
1 2 3 4 5 6 7 | |
Любые недопустимые символы URL, появляющиеся в значении, присвоенном свойству username, будут percent-encoded. Выбор символов для процентного кодирования может несколько отличаться от того, что выдают методы url.parse() и url.format().
url.toString()¶
- Возвращает:
<string>
Метод toString() объекта URL возвращает сериализованный URL. Возвращаемое значение эквивалентно значениям url.href и url.toJSON().
url.toJSON()¶
- Возвращает:
<string>
Метод toJSON() для объекта URL возвращает сериализованный URL. Возвращаемое значение эквивалентно значениям url.href и url.toString().
Этот метод вызывается автоматически, когда объект URL сериализуется с помощью JSON.stringify().
1 2 3 4 5 6 | |
URL.createObjectURL(blob)¶
Стабильность: 1 – Экспериментальная
Экспериментальный
Создает URL-строку 'blob:nodedata:...', которая представляет данный объект <Blob> и может быть использована для получения Blob позже.
1 2 3 4 5 6 7 8 9 | |
Данные, хранящиеся в зарегистрированном <Blob>, будут оставаться в памяти до тех пор, пока не будет вызвана функция URL.revokeObjectURL() для их удаления.
Объекты Blob регистрируются в текущем потоке. При использовании рабочих потоков объекты Blob, зарегистрированные в одном рабочем потоке, будут недоступны для других рабочих или главного потока.
URL.revokeObjectURL(id)¶
Стабильность: 1 – Экспериментальная
Экспериментальный
id<string>Строка URL'blob:nodedata:..., возвращенная предыдущим вызовомURL.createObjectURL().
Удаляет сохраненный <Blob>, идентифицированный заданным ID. Попытка отозвать ID, который не зарегистрирован, завершится молчаливым отказом.
Класс: URLSearchParams¶
API URLSearchParams предоставляет доступ на чтение и запись к запросу URL. Класс URLSearchParams также может быть использован отдельно с помощью одного из четырех следующих конструкторов. Класс URLSearchParams также доступен в глобальном объекте.
Интерфейс WHATWG URLSearchParams и модуль querystring имеют сходное назначение, но назначение модуля querystring более общее, поскольку он позволяет настраивать символы-разделители (& и =). С другой стороны, этот API предназначен исключительно для строк запросов URL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
new URLSearchParams()¶
Создает новый пустой объект URLSearchParams.
новый URLSearchParams(string)¶
string<string>Строка запроса
Разбирает string как строку запроса и использует ее для создания нового объекта URLSearchParams. Ведущий символ '?', если он присутствует, игнорируется.
1 2 3 4 5 6 7 8 9 10 11 | |
new URLSearchParams(obj)¶
obj<Object>Объект, представляющий коллекцию пар ключ-значение.
Создайте новый объект URLSearchParams с хэш-картой запроса. Ключ и значение каждого свойства obj всегда приводятся к строкам.
В отличие от модуля querystring, дублирование ключей в виде значений массива не допускается. Массивы строятся с помощью функции array.toString(), которая просто соединяет все элементы массива запятыми.
1 2 3 4 5 6 7 8 | |
new URLSearchParams(iterable)¶
iterable<Iterable>Итерабельный объект, элементами которого являются пары ключ-значение.
Создайте новый объект URLSearchParams с помощью итерируемой карты способом, аналогичным конструктору Map. iterable может быть Array или любым итерируемым объектом. Это означает, что iterable может быть другим URLSearchParams, в этом случае конструктор просто создаст клон предоставленного URLSearchParams. Элементы iterable представляют собой пары ключ-значение и сами могут быть любыми объектами итерабельного типа.
Допускается дублирование ключей.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
urlSearchParams.append(name, value)¶
Добавляет новую пару имя-значение к строке запроса.
urlSearchParams.delete(name)¶
name<string>
Удаляет все пары имя-значение, имя которых равно name.
urlSearchParams.entries()¶
- Возвращает:
<Iterator>
Возвращает ES6 итератор по каждой из пар имя-значение в запросе. Каждый элемент итератора представляет собой JavaScript массив. Первый элемент массива - это имя, второй элемент массива - это значение.
Псевдоним для urlSearchParams[@@iterator]().
urlSearchParams.forEach(fn[, thisArg])¶
fn<Function>Вызывается для каждой пары имя-значение в запросеthisArg<Object>Используется в качестве значенияthisпри вызовеfn.
Итерация по каждой паре имя-значение в запросе и вызов заданной функции.
1 2 3 4 5 6 7 8 9 10 11 | |
urlSearchParams.get(name)¶
Возвращает значение первой пары имя-значение, имя которой равно name. Если таких пар нет, возвращается null.
urlSearchParams.getAll(name)¶
name<string>- Возвращает:
<string[]>
Возвращает значения всех пар имя-значение, имя которых равно name. Если таких пар нет, возвращается пустой массив.
urlSearchParams.has(name)¶
Возвращает true, если существует хотя бы одна пара имя-значение, имя которой равно name.
urlSearchParams.keys()¶
- Возвращает:
<Iterator>
Возвращает ES6 итератор над именами каждой пары имя-значение.
1 2 3 4 5 6 7 | |
urlSearchParams.set(name, value)¶
Устанавливает значение в объекте URLSearchParams, связанном с name, в value. Если существуют уже существующие пары имя-значение, имена которых равны name, установите значение первой такой пары в value и удалите все остальные. Если нет, добавьте пару имя-значение к строке запроса.
1 2 3 4 5 6 7 8 9 10 11 | |
urlSearchParams.size¶
Общее количество записей параметров.
urlSearchParams.sort()¶
Сортирует все существующие пары имя-значение на месте по их именам. Сортировка выполняется с помощью стабильного алгоритма сортировки, поэтому относительный порядок между парами имя-значение с одинаковыми именами сохраняется.
Этот метод может быть использован, в частности, для увеличения количества просмотров кэша.
1 2 3 4 5 6 | |
urlSearchParams.toString()¶
- Возвращает:
<string>
Возвращает параметры поиска, сериализованные в виде строки, с кодировкой символов в процентах, где это необходимо.
urlSearchParams.values()¶
- Возвращает:
<Iterator>
Возвращает ES6 итератор над значениями каждой пары имя-значение.
urlSearchParams[Symbol.iterator]()¶
- Возвращает:
<Iterator>
Возвращает ES6 Итератор по каждой из пар имя-значение в строке запроса. Каждый элемент итератора представляет собой JavaScript массив. Первый элемент массива - это имя, второй элемент массива - это значение.
Псевдоним для urlSearchParams.entries().
1 2 3 4 5 6 7 | |
url.domainToASCII(domain)¶
Возвращает Punycode ASCII сериализацию домена. Если domain является недопустимым доменом, возвращается пустая строка.
Выполняется обратная операция по отношению к url.domainToUnicode().
Эта функция доступна, только если исполняемый файл node был скомпилирован с включенным ICU. В противном случае доменные имена передаются без изменений.
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 | |
url.domainToUnicode(domain)¶
Возвращает Unicode сериализацию домена. Если domain является недопустимым доменом, возвращается пустая строка.
Выполняется обратная операция по отношению к url.domainToASCII().
Эта функция доступна, только если исполняемый файл node был скомпилирован с включенным ICU. В противном случае доменные имена передаются без изменений.
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 | |
url.fileURLToPath(url)¶
url{URL | string} Строка URL файла или объект URL для преобразования в путь.- Возвращает:
<string>Полностью преобразованный специфичный для платформы Node.js путь к файлу.
Эта функция обеспечивает правильное декодирование символов с процентным кодированием, а также обеспечивает кроссплатформенную корректную строку абсолютного пути.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
url.format(URL[, options])¶
URL<URL>объект WHATWG URLoptions<Object>auth<boolean>true, если сериализованная строка URL должна включать имя пользователя и пароль,falseв противном случае. По умолчанию:true.фрагмент<boolean>true, если сериализованная строка URL должна включать фрагмент,falseв противном случае. По умолчанию:true.search<boolean>true, если сериализованная строка URL должна включать поисковый запрос,falseв противном случае. По умолчанию:true.unicode<boolean>true, если символы Unicode, появляющиеся в компоненте host строки URL, должны быть закодированы напрямую, а не в кодировке Punycode. По умолчанию:false.
- Возвращает:
<string>
Возвращает настраиваемую сериализацию представления URL String объекта WHATWG URL.
Объект URL имеет метод toString() и свойство href, которые возвращают строковую сериализацию URL. Однако они никак не настраиваются. Метод url.format(URL[, options]) позволяет выполнить базовую настройку вывода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
url.pathToFileURL(path)¶
Эта функция гарантирует, что path разрешается абсолютно, и что управляющие символы URL правильно кодируются при преобразовании в URL файла.
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 11 | |
url.urlToHttpOptions(url).¶
url<URL>Объект WHATWG URL для преобразования в объект опций.- Возвращает:
<Object>объект опцийprotocol<string>Используемый протокол.hostname<string>Доменное имя или IP-адрес сервера, на который будет отправлен запрос.hash<string>Фрагмент части URL.search<string>Сериализованный запрос части URL.pathname<string>Часть URL, содержащая путь.path<string>Путь запроса. Должен включать строку запроса, если таковая имеется. Например,'/index.html?page=12'. Исключение возникает, если путь запроса содержит недопустимые символы. В настоящее время отклоняются только пробелы, но в будущем это может измениться.href<string>Сериализованный URL.port<number>Порт удаленного сервера.auth<string>Базовая аутентификация, т.е.'user:password'для вычисления заголовка Authorization.
Эта служебная функция преобразует объект URL в обычный объект options, как ожидается API http.request() и https.request().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Legacy URL API¶
Стабильность: 3 – Закрыто
Устаревший: Вместо него используйте API URL WHATWG.
Legacy urlObject¶
Стабильность: 3 – Закрыто
Устаревший: Вместо этого используйте WHATWG URL API.
Унаследованный urlObject (require('node:url').Url или import { Url } from 'node:url') создается и возвращается функцией url.parse().
urlObject.auth¶
Свойство auth - это имя пользователя и пароль части URL, также называемые userinfo. Это подмножество строк следует за protocol и двойной косой чертой (если присутствует) и предшествует компоненту host, отделенному символом @. Строка представляет собой либо имя пользователя, либо имя пользователя и пароль, разделенные символом :.
Например: 'user:pass'.
urlObject.hash¶
Свойство hash - это часть идентификатора фрагмента URL, включая ведущий символ #.
Например: '#hash'.
urlObject.host¶
Свойство host - это полная часть URL, написанная строчными буквами, включая port, если он указан.
Например: 'sub.example.com:8080'.
urlObject.hostname¶
Свойство hostname - это часть имени хоста, написанная строчными буквами в компоненте host без включенного port.
Например: 'sub.example.com'.
urlObject.href¶
Свойство href - это полная строка URL, которая была разобрана с компонентами protocol и host, преобразованными в нижний регистр.
Например: 'http://user:[email protected]:8080/p/a/t/h?query=string#hash'.
urlObject.path¶
Свойство path представляет собой конкатенацию компонентов pathname и search.
Например: '/p/a/t/h?query=string'.
Декодирование пути не производится.
urlObject.pathname¶
Свойство pathname состоит из всей секции пути URL. Это все, что следует за host (включая port) и до начала компонентов query или hash, разделенных либо ASCII вопросительным знаком (?), либо символом хэша (#).
Например: '/p/a/t/h'.
Декодирование строки пути не выполняется.
urlObject.port¶
Свойство port - это числовая часть порта компонента host.
Например: 8080.
urlObject.protocol¶
Свойство protocol определяет схему протокола URL со строчной буквы.
Например: http:.
urlObject.query¶
Свойство query - это либо строка запроса без ведущего ASCII вопросительного знака (?), либо объект, возвращаемый методом parse() модуля querystring. Является ли свойство query строкой или объектом, определяется аргументом parseQueryString, переданным в url.parse().
Например: 'query=string' или {'query': 'string'}.
Если запрос возвращается как строка, то декодирование строки запроса не производится. Если запрос возвращается как объект, то декодируются и ключи, и значения.
urlObject.search¶
Свойство search состоит из всей части URL "строка запроса", включая ведущий символ ASCII вопросительный знак (?).
Например: '?query=string'.
Декодирование строки запроса не производится.
urlObject.slashes¶
Свойство slashes представляет собой булево со значением true, если после двоеточия в протоколе требуется два ASCII символа прямой косой черты (/).
url.format(urlObject)¶
Стабильность: 3 – Закрыто
Наследие: Вместо этого используйте WHATWG URL API.
urlObject{Object|string} Объект URL (возвращенный функциейurl.parse()или построенный иным образом). Если это строка, она преобразуется в объект путем передачи вurl.parse().
Метод url.format() возвращает отформатированную строку URL, полученную из urlObject.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Если urlObject не является объектом или строкой, url.format() выбросит TypeError.
Процесс форматирования происходит следующим образом:
- Создается новая пустая строка
result. - Если
urlObject.protocolявляется строкой, то она добавляется кresultкак есть. - В противном случае, если
urlObject.protocolне являетсяundefinedи не является строкой, выдаетсяError. - Для всех строковых значений
urlObject.protocol, которые не заканчиваются символом двоеточия ASCII (:), кresultбудет добавлена литеральная строка:. - Если одно из следующих условий истинно, то к
resultбудет добавлена литеральная строка//:- Свойство
urlObject.slashesистинно; urlObject.protocolначинается сhttp,https,ftp,gopherилиfile;
- Свойство
- Если значение свойства
urlObject.authистинно, аurlObject.hostилиurlObject.hostnameне являютсяundefined, то значениеurlObject.authбудет преобразовано в строку и добавлено кresult, за которым следует литеральная строка@. - Если свойство
urlObject.hostявляетсяundefined, то:- Если
urlObject.hostnameявляется строкой, то она добавляется кresult. - В противном случае, если
urlObject.hostnameнеundefinedи не является строкой, выдаетсяError. - Если значение свойства
urlObject.portистинно, аurlObject.hostnameне являетсяundefined:- Буквальная строка
:добавляется кresult, и - Значение
urlObject.portпреобразуется в строку и добавляется кresult.
- Буквальная строка
- Если
- В противном случае, если значение свойства
urlObject.hostистинно, значениеurlObject.hostпринудительно преобразуется в строку и добавляется кresult. - Если свойство
urlObject.pathnameявляется строкой, которая не является пустой строкой:- Если
urlObject.pathnameне начинается с прямой косой черты ASCII (/), то кresultдобавляется литеральная строка'/'. - Значение
urlObject.pathnameдобавляется кresult.
- Если
- В противном случае, если
urlObject.pathnameне являетсяundefinedи не является строкой, выдаетсяError. - Если свойство
urlObject.searchявляетсяundefinedи если свойствоurlObject.queryявляетсяObject, кresultдобавляется литеральная строка?, за которой следует результат вызова методаstringify()модуляquerystring, передающего значениеurlObject.query. - Иначе, если
urlObject.searchявляется строкой:- Если значение
urlObject.searchне начинается с символа ASCII вопросительного знака (?), то кresultдобавляется литеральная строка?. - Значение
urlObject.searchдобавляется кresult.
- Если значение
- В противном случае, если
urlObject.searchне являетсяundefinedи не является строкой, будет выдана ошибкаError. - Если свойство
urlObject.hashявляется строкой:- Если значение
urlObject.hashне начинается с символа ASCII hash (#), кresultдобавляется литеральная строка#. - Значение
urlObject.hashдобавляется кresult.
- Если значение
- В противном случае, если свойство
urlObject.hashне являетсяundefinedи не является строкой, выдается ошибкаError. - Возвращается
result.
url.parse(urlString[, parseQueryString[, slashesDenoteHost]])¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Вместо этого используйте WHATWG URL API.
urlString<string>Строка URL для разбора.parseQueryString<boolean>Еслиtrue, свойствоqueryвсегда будет установлено в объект, возвращаемый методомparse()модуляquerystring. Еслиfalse, свойствоqueryвозвращаемого объекта URL будет представлять собой непарсированную, не декодированную строку. По умолчанию:false.slashesDenoteHost<boolean>Еслиtrue, то первая лексема после литеральной строки///и перед следующей/будет интерпретироваться какhost. Например, если задано//foo/bar, результатом будет{host: 'foo', pathname: '/bar'}, а не{pathname: '//foo/bar'}. По умолчанию:false.
Метод url.parse() принимает строку URL, разбирает ее и возвращает объект URL.
Если urlString не является строкой, возникает TypeError.
Ошибка URIError возникает, если свойство auth присутствует, но не может быть декодировано.
url.parse() использует мягкий, нестандартный алгоритм для разбора строк URL. Он подвержен таким проблемам безопасности, как подмена имени хоста и некорректная обработка имен пользователей и паролей. Не используйте с недоверенными входными данными. CVE не выдаются для уязвимостей url.parse(). Вместо этого используйте API WHATWG URL.
url.resolve(from, to)¶
Стабильность: 3 – Закрыто
Наследие: Вместо этого используйте WHATWG URL API.
from<string>Базовый URL, который следует использовать, еслиto- относительный URL.to<string>Целевой URL для преобразования.
Метод url.resolve() разрешает целевой URL относительно базового URL аналогично тому, как веб-браузер разрешает тег якоря.
1 2 3 4 | |
Для достижения того же результата с помощью WHATWG URL API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Процентное кодирование в URL-адресах¶
URL-адреса могут содержать только определенный диапазон символов. Любой символ, выходящий за пределы этого диапазона, должен быть закодирован. Как кодировать такие символы и какие символы кодировать, полностью зависит от того, где символ находится в структуре URL.
Legacy API¶
В Legacy API пробелы (' ') и следующие символы будут автоматически экранироваться в свойствах объектов URL:
1 | |
Например, символ пробела ASCII (' ') кодируется как %20. Символ прямой косой черты ASCII (/) кодируется как %3C.
WHATWG API¶
В WHATWG URL Standard используется более избирательный и тонкий подход к выбору кодированных символов, чем в Legacy API.
Алгоритм WHATWG определяет четыре "набора процентного кодирования", которые описывают диапазоны символов, которые должны быть закодированы в процентах:
- Набор C0 control percent-encode set включает кодовые точки в диапазоне от U+0000 до U+001F (включительно) и все кодовые точки больше U+007E.
- Набор фрагментных процентов кодирования включает набор C0 управляющих процентов кодирования и кодовые точки U+0020, U+0022, U+003C, U+003E и U+0060.
- Набор кодов path percent-encode set включает набор кодов C0 control percent-encode set и кодовые точки U+0020, U+0022, U+0023, U+003C, U+003E, U+003F, U+0060, U+007B и U+007D.
- Набор кодов userinfo включает набор кодов path percent-encode set и кодовые точки U+002F, U+003A, U+003B, U+003D, U+0040, U+005B, U+005C, U+005D, U+005E и U+007C.
Набор кодировок userinfo percent-encode set используется исключительно для имени пользователя и паролей, закодированных в URL. Набор кодировок path percent-encode set используется для пути большинства URL. Набор fragment percent-encode set используется для фрагментов URL. Набор кодировок C0 control percent-encode set используется для хоста и пути при определенных условиях, а также во всех остальных случаях.
Когда в имени хоста появляются символы, не относящиеся к кодировке ASCII, имя хоста кодируется с использованием алгоритма Punycode. Заметим, однако, что имя хоста может содержать как кодированные Punycode, так и кодированные процентами символы:
1 2 3 4 5 | |