Скажите, существует URL http://www.example.com/#hello
#hello
вещь быть отправленным в веб-сервер или нет, согласно стандартам?Обновление: не игнорируйте первый вопрос.
Ответ на этот вопрос аналогичен ответам на /questions/774136. В основном, согласно стандарту @ faqs.org/rfcs/rfc1808.html (см. раздел 2.4.1) говорится: ""Обратите внимание, что идентификатор фрагмента не считается частью URL". Как заметил "stephbu", "тег якоря никогда не отправляется как часть HTTP-запроса любым браузером, он интерпретируется только локально в браузере".
Хеш-переменные вообще не отправляются на веб-сервер.
Например, запрос к 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
Часть привязки (после #) не отправляется никаким переменным $ _SERVER в PHP. Я не знаю, есть ли способ получить эту информацию из URL-адреса или нет (насколько мне известно, это невозможно). Предполагается, что он будет использоваться браузером только для поиска местоположения на странице, поэтому страница не перезагружается, если вы нажимаете на привязку, например: привет a >