Подтвердить что ты не робот

Ссылка link/href с параметрами (начиная с вопросительного знака) действительна?

Является ли эта ссылка действительной?

<a href="?lang=en">eng</a>

Я знаю, что браузеры относятся к нему так, как ожидалось, и я знаю, что пустая ссылка тоже будет в порядке - но можно ли просто указать параметры?

Мне любопытно, что знак вопроса ( "?" ) является только соглашением большинством HTTP-серверов (AFAIK), хотя я признаю, что он является преобладающим.

Итак, чтобы повторить:

  • будут ли все браузеры правильно интерпретировать это?

  • это в RFC?

  • Можно ли ожидать каких-либо проблем с этим?

ОБНОВЛЕНИЕ: предполагаемое действие при щелчке - это перенаправление на ту же страницу, но с разными параметрами GET ( "lang = en" в приведенном выше примере).

4b9b3361

Ответ 1

Да, это так. Вы можете найти его в RFC 1808 - Relative Uniform Resource Locators:

Внутри объекта с четко определенным базовым URL-адресом      База: <URL:http://a/b/c/d;p?q#f>
  относительные URL-адреса будут разрешены следующим образом:

5,1. Обычные примеры

?y= <URL:http://a/b/c/d;p?y>

RFC 3986 - Единый идентификатор ресурса (URI): общий синтаксис повторяет то же самое и добавляет более подробную информацию, включая грамматику:

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

relative-part = "//" authority path-abempty
             / path-absolute
             / path-noscheme
             / path-empty     #; zero characters

Теперь, это не значит, что все браузеры реализуют его в соответствии со стандартом, но похоже, что это должно быть безопасно.

Ответ 2

Да - и он ударит по текущему URL-адресу с параметрами, которые вы передаете.

Это очень удобно использовать в ситуациях, когда вы хотите убедиться, что вы не пересекаете текущую границу страницы/формы и продолжаете бить то же самое ActionMethod, или все, что прослушивается с разными параметрами.