Насколько широко поддерживаются связанные со схемой URI в переадресации HTTP 301

Я хочу, чтобы запросы для поддомена www или для альтернативных доменов верхнего уровня перенаправлялись на один канонический URL-адрес.

Чтобы избежать проблем с HTTP/HTTPS, я решил, что самым простым способом будет просто отправить URI, относящийся к схеме, в заголовке Location, например так:

HTTP/1.1 301 Moved Permanently
Location: //example.com/

Кажется, это нормально работает в браузерах, но игрушечный «валидатор» на http://no-www.org/ не справляется с этим правильно. Является ли это всего лишь одним плохо написанным скриптом, или такое поведение на самом деле более распространено в скриптах, поисковых роботах и ​​т. д.?


person dnadlinger    schedule 08.12.2010    source источник
comment
Относительные URI теперь разрешены в перенаправлениях, поэтому вы можете ожидать, что это будет работать во всех будущих браузерах.   -  person Raedwald    schedule 03.09.2014
comment
Спасибо за наводку!   -  person dnadlinger    schedule 04.09.2014


Ответы (1)


Расположение ожидает абсолютное URI:

[…] Значение поля состоит из одного абсолютного URI.

Location       = "Location" ":" absoluteURI

Хотя большинство пользовательских агентов также принимают относительные URI, вы должны придерживаться спецификации и предоставлять абсолютный URI.

person Gumbo    schedule 08.12.2010
comment
О, спасибо, я полностью пропустил эту «абсолютную» часть — я просто предположил, что любой URL-адрес должен работать, поскольку все протестированные мной UA вели себя так, как предполагалось… - person dnadlinger; 08.12.2010
comment
@klickverbot: практическое правило: будьте терпимы к входным данным, но будьте строги к результатам. - person Gumbo; 08.12.2010
comment
Это ошибка в RFC 2616, которая исправлена ​​в следующей редакции: http://trac.tools.ietf.org/wg/httpbis/trac/ticket/185 - person Julian Reschke; 08.12.2010
comment
@ Джулиан Решке: О, правда? Но не помешает использовать и более строгий вариант. - person Gumbo; 08.12.2010
comment
Это ошибка в RFC 2616, но этот RFC все еще действует и требует, чтобы Location имел абсолютный URL-адрес. Существует предложение, чтобы изменить его, но он все еще ожидает утверждения. - person rustyx; 11.02.2014
comment
rustyx - это предложение действительно было одобрено (в феврале) - person Julian Reschke; 02.06.2014