URL-адреса без “http | https”


89

Я щойно дізнався від свого колеги, що якщо пропустити частину URL-адреси у посиланні "http | https", ця URL-адреса використовуватиме будь-яку схему, на якій використовується сторінка, на якій вона знаходиться.

Так, наприклад, якщо моя сторінка доступна за адресою http://www.example.com, і у мене є посилання (зверніть увагу на «//» на передній панелі):

<a href="https://www.google.com">Google</a>

Це посилання буде спрямовано на http://www.google.com .

Але якщо я перейду на сторінку https://www.example.com з тим самим посиланням, вона перейде на https://www.google.com

Я хотів шукати в Інтернеті додаткову інформацію про це, але мені не вдається придумати хорошу пошукову фразу. Якщо я шукаю "URL-адреси без HTTP", повернені сторінки стосуються URL-адрес із такою формою: "www.example.com", що не те, що я шукаю.

Ви б назвали це URL-адресою без схеми? URL-адреса без протоколу?

Це працює у всіх браузерах? Я протестував його в FF та IE 8, і він працював в обох. Це частина стандарту, чи слід протестувати більше браузерів?



1
Для довідки (оскільки ви запитували, за якими термінами шукати), пошук Google, який привів мене до початкового питання StackOverflow, був: "абсолютна URL-адреса без протоколу"
Девід

ви не вказуєте, чи є це http або https, тому браузер вирішує за вас, беручи останню сторінку, припускаючи, що посилання було з тієї самої сторінки.
raym06

Дякую, Девід, посилання на дублікат відповіло на всі мої запитання
topher-j

1
@David: Точніше, ви не назвали б це абсолютною URL-адресою, якщо вона не має протоколу; це швидше відносна URL-адреса.
Гамбо

Відповіді:


73

Відносна URL-адреса протоколу

Ви можете отримувати незвичні попередження про безпеку в деяких браузерах.

Дивіться також URL-адреси, пов’язані з протоколом Wikipedia, для короткого визначення.

Свого часу це було рекомендовано ; але рухаючись вперед, цього слід уникати .

Див. Також запитання щодо переповнення стека. Навіщо взагалі використовувати URL-адреси, що відносяться до протоколу? .


15

Це називається посиланням на мережевий шлях (частина, яка відсутня, називається schemeабо protocol), визначена у Розділі 4.2 RFC3986

4.2 Відносне посилання

Відносне посилання використовує переваги ієрархічного синтаксису (Розділ 1.2.3) для вираження посилання на URI щодо простору імен іншого ієрархічного URI.

  relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty

URI, на який посилається відносна посилання, також відома як цільовий URI, отримується шляхом застосування алгоритму розпізнавання посилань з Розділу 5.

Відносне посилання, яке починається з двох косих символів, називається посиланням на мережевий шлях (наголос мій); такі посилання використовуються рідко. Відносне посилання, яке починається з одного косого символу, називається посиланням на абсолютний шлях. Відносне посилання, яке не починається з косої риски, називається посиланням на відносний шлях.

Сегмент шляху, що містить символ двокрапки (наприклад, "this: that"), не може бути використаний як перший сегмент посилання на відносний шлях, оскільки його буде прийнято за назву схеми. Такому сегменту повинен передувати крапковий сегмент (наприклад, "./this:that"), щоб зробити посилання на відносний шлях.


// не може використовуватися в базовому тегу в html. Я встановив <base href = "// abc.com/" та відносну URL-адресу зображення <img src = "/ img / logo.jpg>. Однак, відкрившись у браузері, посилання на зображення стане файлом: /// abc. com / img / logo.jpg. Будь-яке обхідне рішення?
Скотт Чу,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.