Может ли объект URL js быть длинным числом?

new URL(`http://12345678901`) недействителен, а new URL(`http://1234567890`) и new URL(`http://a12345678901`) допустимы.

эти работы:

console.info(new URL(`http://1234567890`))
console.info(new URL(`http://a12345678901`))

Это не делает:

console.info(new URL(`http://12345678901`))

Вот ошибка в хроме:

VM2064:1 Uncaught TypeError: не удалось создать URL-адрес: неверный URL-адрес: 1:1 (анонимно) @ VM2064:1

Fire Fox:

Неперехваченная ошибка типа: конструктор URL: http://12345678901 не является допустимым URL-адресом. Код оценки отладчика: 1 Оценочный код отладчика: 1:1 Код оценки отладчика: 1

Я ожидаю, что URL-адрес будет работать. Я пробовал читать https://url.spec.whatwg.org/#concept-basic-url-parser но это очень запутанно, и я в этом не особо разбираюсь. Эти ошибки не похожи на обычные ошибки js, так что, я думаю, это ошибки?

1234567890 => 0x499602D2 => 0x49, 0x96, 0x02, 0xD2 => 73, 150, 2, 210 => 73.150.2.210. Между тем 12345678901 невозможно выразить в 4 байтах.
Nick is tired 07.08.2024 05:09

@Nickistired, спасибо за это понимание. Я думаю, следующий вопрос: ожидается ли такое поведение? Очевидно, что ошибка невелика, но является ли она частью спецификации URL?

urlencode 07.08.2024 05:13

Вот этого я не знаю, поэтому и разместил комментарий, а не ответ, просто наблюдение :-)

Nick is tired 07.08.2024 05:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я попробовал это: console.info(new URL(http://12345678901234567890:5000)) и всё заработало без проблем. Также я попробовал два других варианта, все работает так же, без каких-либо проблем.

Это странно. Вот скриншот ошибки в Chrome: imgur.com/a/jxTPhbN. Если не секрет, какую систему вы используете?

urlencode 07.08.2024 05:06

Я использую macOS, но теперь, когда я читаю об этом, я увидел, что ошибка может быть связана с именем домена.

Nathan 07.08.2024 05:24

Можно ли превратить ваш ответ в комментарий, если вы передумали? Кроме того, я только что тестировал Safari и там тоже получаю странную ошибку. Я думаю, что на самом деле вам не хватает кавычек в URL-адресе вашего теста.

urlencode 07.08.2024 05:35
Ответ принят как подходящий

Это не ошибка, это спецификация. Если часть URL-адреса «имя хоста» представляет собой число, это должен быть действительный адрес IPv4, то есть 32-битное число. Разделение байтов точками (так обычно пишутся адреса IPv4) в URL-адресах не является обязательным.

Следовательно:
new URL("http://4294967296/") бросает из-за Invalid URL.
new URL("http://4294967295/") работает и аналогичен new URL("http://255.255.255.255/").

Путь через спецификацию:
https://url.spec.whatwg.org/#hostname-state (шаг 3.3)
https://url.spec.whatwg.org/#concept-host-parser (шаг 8)
https://url.spec.whatwg.org/#concept-ipv4-parser (шаг 8)

Спасибо! По-прежнему странное сообщение об ошибке в моем Chrome («at :1:1 (anonymous) @ VM2064:1»), но, по крайней мере, оно есть в спецификации.

urlencode 07.08.2024 19:59

неважно, на самом деле это обычная ошибка.

urlencode 07.08.2024 23:37

Другие вопросы по теме