Чому ця URL з надмірними попередніми точками вирішує IP-адресу?


31

http://.................1168951531

Який при введенні в хром попередній перегляд URL-адреси http://69.172.200.235/, на яку перенаправляє (за зовнішнім кодом відповіді сервера 3XX) на www.test.com, але це виходить за рамки того, що я намагаюся з’ясувати.

Як така дивна URL-адреса, як вище, вирішує IP-адресу? Це правило форматування?


2
Зауважте, що однакова URL-адреса без крапок також працює в Chrome : http://1168951531. Але це ставить питання, чому Chrome ігнорує точки?
wjandrea

6
@wjandrea Я думаю, що Chrome інтерпретує їх як субдомени та насправді їх не ігнорує. Ви можете перевірити це, переглянувши заголовок хосту, який надсилає хром.
Крістоф

1
Трохи дотичної, але адреси Gmail дозволяють додавати стільки крапок, скільки потрібно, не викликаючи проблем, а також + з будь-яким текстом після нього. Таким чином, abcd@gmail.comви також отримаєте пошту, надіслану на a.b.c.d@gmail.comабо abcd+junkmail@gmail.com- і користь - це надсилання різних електронних листів на різні сайти, щоб побачити, хто ставить вас у списки спаму, або налаштувати правила для обробки вхідної пошти різними способами залежно від адреси "До" ( Більше ) Або kylesmom@gmail.com зараз kylesmom + is.a.big.fa ...
ashleedawg

Для чого це варто, поєднання Firefox і кальмарів цього не дозволяє; Firefox передає точки через дослівні та помилки кальмарів, оскільки це недійсний формат URL. Тож це здається помилкою у Chrome чи, можливо, специфікація щодо порожніх доменів неоднозначна?
Пол Гір

Відповіді:


44

Chrome інтерпретує число 1168951531 як десяткове число, яке в шістнадцятковому значенні становить 45ACC8EB. 45ACC8EB у шістнадцятковій розмірі - це те саме, що і пунктирний десятковий 69.172.200.235, коли ви приймаєте кожну пару шістнадцяткових цифр за одне десяткове число.

45 -> 69
AC -> 172
C8 -> 200
EB -> 235

Коротка відповідь: це чисте десяткове представлення тієї самої IP-адреси.


4
Firefox теж робить інтерпретацію (без крапок), але не Edge.
JAB

11
Типовий вихідний код для вирішення імені хоста полягає в тому, щоб спочатку перевірити, чи це IP-адреса (наприклад, з inet_addr()), а якщо ні, передати його такій функції, як gethostname()вона допитує сервери DNS (і читає hostsфайл). Передача десяткового представлення IP-адреси, як пояснено у відповіді вище, цілком законно в більшості реалізацій. Я можу набрати ping 1168951531термінал, і він фактично вводить потрібну адресу. З усіма крапками спереду стає дивніше, але, можливо, Chrome видаляє їх, перш ніж намагатися вирішити.
Але

1
Варто зазначити, що і Chrome, і Firefox приймають URL без крапок. ( http://1168951531)
Stevoisiak

3

Це довге подання ipv4 адреси ip 69.172.200.235. Які карти домену www.test.com.


4
Чи можете ви пояснити, що таке "довге представництво"?
Філіп

2
Це краще пояснити іншою відповіддю, але вона все ще зводиться до того ж самого.
Готрек

9
Мабуть, мабуть, буде " longпредставництво"
n0rd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.