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

Скажем, есть URL http://www.example.com/#hello

  • Должно ли #hello отправляться на веб-сервер или нет, в соответствии со стандартами?
  • Как действуют современные браузеры?

Обновление: Пожалуйста, не игнорируйте первый вопрос.

Ответ 1

Ответ на этот вопрос аналогичен ответам на /questions/ 774136. В принципе, согласно стандарту @faqs.org/rfcs/rfc1808.html(см. Раздел 2.4.1), он говорит: "Обратите внимание, что идентификатор фрагмента не считается частью URL". Как отметил "stephbu", "якорный тег никогда не отправляется как часть HTTP-запроса каким-либо браузером, он интерпретируется локально только в браузере".

Ответ 2

Хэш-переменные вообще не отправляются на веб-сервер.

Например, запрос http://www.whatismyip.org/#test из Firefox отправляет следующий HTTP-запрос пакета

GET / HTTP/1.1
Host: www.whatismyip.org
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0

Вы заметите, что # нигде не найдено. Страницы, которые вы видите, используя # в качестве формы навигации, делают это через javascript. Этот параметр доступен, хотя переменная window.location.hash

Ответ 3

Якорная часть (после #) не отправляется никаким переменным $_SERVER в PHP. Я не знаю, есть ли способ получить эту информацию из URL-адреса или нет (насколько я знаю, это невозможно). Он должен использоваться браузером только для поиска местоположения на странице, поэтому страница не перезагружается, если вы нажимаете на якорь следующим образом: <a href="#hello">hello</a>