2

Для данного ввода в строке URL:

0.0.0.0:4567/login/re-welcome/

или же

http://0.0.0.0:4567/login/re-welcome/

В омнибоксе Google выделена только одна опция - поиск в Google, и я не могу посещать указанный мной URL. Я предоставил соответствующий снимок экрана, показывающий, как для моего ввода есть только один выбор, и после нажатия клавиши ВВОД перенаправляет прямо в поиск Google.

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

Я нахожусь на Mac OSX 10.10.2 и Chrome версии 40.0.2214.111 (64-разрядная версия)

Есть ли способ это исправить? Смущает то, что это никогда не делалось ... Поэтому мне интересно, есть ли что-то, что я пропускаю.

Посредник сервера

Снимок экрана с поведением омнибокса

3 ответа3

3

Вы не должны использовать 0.0.0.0 таким образом. Даже если это сработало. Причина: вы неизбежно столкнетесь с неприятностями.

Использование 0.0.0.0 для связи HTTP является нарушением стандарта, который официально классифицирует 0.0.0.0 как "непригодный" адрес. Термин "неиспользуемый адрес" в IPv4 относится к первому адресу и последнему адресу любой сети или подсети. 0.0.0.0 - это первый адрес каждой подсети IPv4, частью которой он является.

То, что первый адрес обрабатывается как специальный, обсуждается (используя различные способы указания нотации) по меньшей мере в RFC 894, RFC 919, RFC 1122 и RFC 3021. Основная причина, по которой он был объявлен "непригодным для использования", заключается в том, что он рассматривается как широковещательный адрес. С тех пор более распространенным стандартом IPv4 является то, что последний адрес является широковещательным адресом, но, тем не менее, первый адрес продолжает широко признаваться как "непригодный для использования". Прости, @harrymc, что я не согласен с комментариями на жаргоне. Даже если адрес технически может быть использован и, следовательно, соответствует определению английского слова "usable", в мире сетей существуют некоторые технические термины:"usable address" и "unableable address". На основании этого жаргона отраслевого стандарта 0.0.0.0 классифицируется как "непригодный для использования".

Возможно, нет технической причины, по которой первый адрес должен быть непригодным для использования. Это не результат ограничения, вызванного некоторым ограничением количества чисел, которые могут поместиться в какой-либо группе. Тем не менее, это стандарт на основе консенсуса. Правильно или нет, это реальность. Люди обучены избегать использования этого адреса. В результате многие части программного обеспечения могут проверить, чтобы убедиться, что это стандартное правило не нарушается.

Если вы потратите достаточно времени на продвижение в сети, вы обнаружите, что многие современные сети были разработаны вокруг концепции приятности. Поэтому консенсус важен.

Если вы хотите попытаться нарушить это правило, вы можете попробовать. Существует множество программ с открытым исходным кодом, которые вы можете настроить по своему усмотрению. Однако, если вы сознательно нарушаете общие стандарты (или отказываетесь адаптироваться после того, как узнаете, что неосознанно нарушаете общие стандарты), вы не должны удивляться, если у вас возникнут определенные проблемы. Например: если авторы основного программного обеспечения для просмотра веб-страниц не рассматривают "непригодный" адрес как обычный адрес.

Помимо непригодности, 0.0.0.0 заполнен нулями и делает его очень похожим по концепции на «::», который официально является "неопределенным" адресом в IPv6. Поэтому трактовка 0.0.0.0 как "неуказанного" адреса в IPv4 кажется довольно разумной и согласуется с тем, как команда netstat (особенно с «netstat -na») работает (как в Unix, так и в Microsoft Windows).

В этом смысле использование DHCP 0.0.0.0 имеет большой смысл; перед назначением адреса компьютер использует "неопределенный" адрес. На самом деле, я подозреваю, что компьютер делает ставку на MAC-адрес кадра (уровень 2: Ethernet/Wi-Fi), а не на адрес IPv4 (уровень 3), так что правильный компьютер получает правильный адрес.

Некоторые люди могут думать, что 0.0.0.0 относится к понятию "любой" адрес, возможно, в значительной степени потому, что «netsat -na», казалось, делал это. Если у вас есть представление о том, что вы хотите, чтобы значило 0.0.0.0, знайте, что есть и другие идеи, которые довольно широко распространены. Конфликты и другие подобные неприятности ожидаются за попытку другого подхода.

Говоря о netstat, вы можете обнаружить, что «netstat -nr» показывает запись в таблице маршрутизации для «127.0.0.0/8» или «127.0.0.1/8» (маска подсети IPv4 255.255.255.0) и других сетевых адресов, которые у вас есть. назначенный вашей сетевой карте, но не "0.0.0.0/32" (маска подсети IPv4 255.255.255.255). Хотя вы можете видеть, что «0.0.0.0/0» (маска подсети IPv4 0.0.0.0) настроена на отправку трафика на ваш шлюз по умолчанию IPv4. Это стандартная подсеть и маршрутизация на работе. Если вы не были обучены таким методам, лучше всего не пытаться придумать новый набор личных ожиданий того, как 0.0.0.0 должен работать.

Наконец, обращайтесь к Google Omnibox: я понятия не имею, как это работает. Однако любое использование, основанное на 0.0.0.0, настолько нестандартно, что я предполагаю, что разработчик программного обеспечения (в данном случае Google) может внести изменения в любое время. И если они вносят изменения в любое время, они, скорее всего, отметят только статистически незначительное количество людей. Поэтому лучше всего не полагаться на то, что программное обеспечение в настоящее время обрабатывает адрес 0.0.0.0. Возможно, что Google ищет текст, потому что Google рассматривает ввод (то, что вы ввели в адресной строке) как недействительный текст - то, что Google не распознает как действительный адрес. Это скорее то, что я ожидаю от многих веб-браузеров.

Я понимаю боль, которую вы можете испытывать: «Это сработало раньше; почему это сломалось?"Это понятно. Вполне возможно, что предыдущий способ сделать что-то сломалось. Это то, чем вы рискуете, когда делаете что-то не стандартное. Как я упоминал ранее, поскольку ни один универсальный стандарт явно не ожидает никакого рабочего поведения, можно ожидать, что "нестандартное" ("нестандартное") поведение может нарушиться в любое время. Чтобы избежать этого, лучше всего использовать стандартные методы с четко определенным поведением.

Если вам нужен простой в вводе сетевой адрес, вы можете использовать http://10.1.1.1 или личное имя DNS (например, http:// llll (он же http:// LLLL)). Есть некоторые аргументы, почему частный корень DNS нежелателен, но он, вероятно, будет работать с меньшими проблемами, чем пытаться полагаться на http://0.0.0.0. Или вы можете использовать http:// l (для локального веб-сервера) и использовать свой файл hosts, который может оказаться менее трудоемким, чем настройка пользовательского DNS, по крайней мере для быстрого краткосрочного решения в малом масштабе. Эти решения, вероятно, будут работать лучше, чем продолжать биться головой о стену, пытаясь заставить мир обращаться с http://0.0.0.0 так, как вы этого хотите.

Если вы хотите, чтобы решение работало с веб-браузерами, следуйте советам из комментариев Heavyyd, чтобы попробовать http://127.0.0.1 или IP-адрес, который использует ваша сетевая карта . Вы можете попробовать http://localhost (но при попытке подключения к веб-серверу другим компьютерам следует использовать IP-адрес, отличный от http://127.0.0.1 или http://localhost или http://[::] )

Если вы продолжаете настаивать на использовании 0.0.0.0, вы, вероятно, столкнетесь с этими проблемами:

  • Это может или не может работать, сегодня
  • Люди будут разочарованы попытками помочь вам, так как вы нарушаете стандарты, которые многие другие люди принимают
  • Даже если у вас все работает сегодня, это может сломаться в будущем, если вы сделаете что-то вроде обновления какой-либо части программного обеспечения. Обновление может решить начать обработку 0.0.0.0 как ненормального адреса.

Если вы готовы обойти любые проблемы, включая адаптацию исходного кода, то никто здесь не пытается вас остановить. Только не ожидайте, что другие люди помогут, потому что они могут рассматривать все усилия как пустую трата времени (по сравнению с лучшей альтернативой, которая должна просто соответствовать стандартам). В долгосрочной перспективе существуют другие подходы, которые потребуют меньше усилий, чем попытки навязать определенное поведение адресу 0.0.0.0.

1

Из Википедии около 0.0.0.0 :

В версии 4 интернет-протокола адрес 0.0.0.0 является не маршрутизируемым мета-адресом, используемым для обозначения недопустимой, неизвестной или неприменимой цели. Чтобы придать особое значение недопустимому фрагменту данных, это применение внутриполосной сигнализации.

Использование включает в себя:

  • Адрес, который хост называет своим собственным, если ему еще не присвоен адрес. Например, при отправке начального пакета DHCPDISCOVER при использовании DHCP.
  • Адрес, который хост назначает себе в случае сбоя запроса адреса через DHCP, при условии, что стек IP хоста поддерживает это. Это использование было заменено механизмом APIPA в современных операционных системах.
  • Способ указать "любой IPv4-хост вообще". Это используется при указании маршрута по умолчанию.
  • Способ явно указать, что цель недоступна
  • Способ указать "любой адрес IPv4 на всех". Он используется таким образом при настройке серверов (т. Е. При привязке прослушивающих сокетов). Это известно программистам TCP как INADDR_ANY. (bind (2) привязывает адреса, а не интерфейсы.)

В RFC 1122 нотация "{0,0}" используется для обозначения 0.0.0.0/x (х - от 0 до 32).
Цитата:

{0, 0} Этот хост в этой сети. НЕ ДОЛЖЕН отправляться, кроме как в качестве адреса источника как части процедуры инициализации, с помощью которой хост узнает свой собственный IP-адрес.

Поэтому адрес 0.0.0.0 может использоваться, но не рекомендуется, поскольку он может помешать правильному функционированию других сетевых устройств, которые ищут свой собственный IP-адрес в сети. Как говорится в RFC 1122, его можно использовать в качестве адреса источника, но его никогда не следует использовать в качестве адреса назначения.

В вашем случае вы используете адрес 0.0.0.0 вместо localhost или 127.0.0.1. Это может сработать сегодня, но может быть нарушено будущими обновлениями какого-либо программного продукта, который вы используете.

Хорошим примером этого является Chrome, где недавнее обновление назвало 0.0.0.0 недопустимым адресом, который следует искать, а не использовать; такая же ошибка, как при указании http://1.2.3 .

Эта ошибка описана в Chromium Issue 428046: невозможно получить доступ к 0.0.0.0, где последний комментарий от 29 января 2015 г. от pkasting@chromium.org говорит:

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

Так что вам просто нужно подождать, пока это исправление попадет в релиз Chrome. А пока вы можете:

  • Используйте вместо localhost или 127.0.0.1
  • Добавьте короткое имя в файл hosts, которое может быть короче, чем 0.0.0.0
  • Используйте другой браузер
1

Хотя вы должны обратить внимание на два других ответа о том, почему использование 0.0.0.0 является плохой идеей, вы все равно можете получить к нему доступ с помощью консоли разработчика в Chrome.

Откройте консоль и введите

window.location.href="http://0.0.0.0:4567/login/re-welcome/"

Chrome должен перейти по правильному адресу.

В качестве альтернативы (@TOOGAM) вы можете ввести этот javascript непосредственно в адресную строку:

javascript:window.location.href="http://0.0.0.0:4567/login/re-welcome/"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .