Является ли привязка частью 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>