Які наслідки використання відносних заголовків розташування?


17

Відповідно до специфікації , заголовки місцеположення, які використовуються для переадресації, потребують імені сервера

HTTP/1.1 301 Moved Permanently
...
Location: http://example.com/foo/baz/bar

Однак у 2012 році більшість веб-браузерів визнає відносний шлях і перенаправить вас на нове місце, використовуючи оригінальне ім’я сервера

HTTP/1.1 301 Moved Permanently
...
Location: /foo/baz/bar

Чи є якісь негативні / дивовижні наслідки для використання відносних URL-адрес у заголовках місцеположення? Моє особливе занепокоєння полягає в тому, як Google / пошукові системи будуть інтерпретувати це, але якщо є щось інше, я б не задумувався над цим.


Чи можете ви процитувати точний біт, з якого ви отримуєте цю вимогу? Не складно, я просто не одразу бачу це і не відчуваю, як читати цілий RFC, щоб знайти його. Також ви цитуєте специфікацію HTTP 1.0, але використовуєте заголовки HTTP 1.1 у своїх прикладах. (Що може або не може змінити дозволений вміст.)
Су ',

Розділ 10.11. tools.ietf.org/html/rfc1945#page-44 Наскільки мені відомо, в специфікації 1.1, що "виправляє" це, також нічого.
Алан Шторм

Відповіді:


15

Згідно з поточною версією стандарту HTTP / 1.1, RFC 2616, значення Locationзаголовка повинно бути абсолютним URI .

Однак у проекті стандарту, підготовленому Робочою групою HTTPbis для врешті-решт замінити RFC 2616, це було змінено, щоб дозволити також відносні URI, мабуть тому, що :

"Визначення заголовка Місцеположення [в RFC 2616] різними способами відрізняється тим, як принаймні веб-браузери повинні мати справу з ними, щоб взаємодіяти з вмістом в Інтернеті"

На практиці AFAIK майже у всіх основних браузерах та пошукових системах розуміє та приймає перенаправлення HTTP на відносні URL-адреси. Однак поки проект HTTPbis якогось дня не стане офіційним стандартом і не стане широко прийнятим, завжди знайдуться нові або незрозумілі користувацькі агенти, які реалізують поточний стандарт до листа та приймають лише абсолютні URL-адреси. Таким чином, на сьогодні безпечним ділом є використання лише абсолютних URL-адрес у Locationзаголовках, як це пропонує закон Постела :

"Будьте консервативними в тому, що ви посилаєте, ліберальним у тому, що приймаєте".


3
RFC 2616 тепер застаріла на 7231, що дозволяє відносні URL-адреси в заголовках місцеположення. Агенти користувачів, які впроваджують стандарт до цього листа, тепер прийматимуть відносні URL-адреси
ZoFreX

6

Розділ 14.30 HTTP 1.1 RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 суттєво не відрізняється. Я не знаю, що ви бачите фактичні практичні обмеження для цього.

Єдиний раз, коли я бачив навіть попередження щодо цього питання, коли я тестував у Lynx, і місце розташування було не абсолютним, воно попередить вас "Значення місця не абсолютне" - але якщо я добре пам’ятаю, все одно відпустив би вас на нове місце. Щойно я тестував Lynx 2.8.7, і, здається, це більше не робиться, хоча це може бути проблемою з конфігурацією.

Тепер ви кажете:

Моє особливе занепокоєння полягає в тому, як Google / пошукові системи будуть інтерпретувати це, але якщо є щось інше, я б не задумувався над цим.

Я вважаю, що це є підставою для перевірки. Я створив би URL-адресу, помістив її у файл XML сайту вашого сайту , і URL-адреса має бути переспрямуванням, як ви описуєте. Я думаю, що потрібно перевірити це за допомогою інструментів Google для веб-майстрів і побачити, чи є негативні наслідки.

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