Является ли якорная часть URL отправляемой на веб-сервер? - PullRequest
13 голосов
/ 18 июня 2010

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

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

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

Ответы [ 3 ]

14 голосов
/ 21 июня 2010

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

7 голосов
/ 18 июня 2010

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

Например, запрос к 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

1 голос
/ 18 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...