Получите привязку от URI

Рейтинг 1-10 не будет работать, у всех есть разные уровни. Кому-то, кто всегда дает 3-7 оценок, затмили бы его рейтинги люди, которые всегда дают 1 или 10.

a-b более осуществим.

11
задан user369450 19 February 2014 в 16:33
поделиться

3 ответа

Это невозможно, так как клиенты не отправляют "часть привязки" на сервер

В качестве примера приведем точный запрос, который Chrome сгенерировал после отправки http: //example.com/#foobar (записано с помощью Wireshark):

GET / HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.11 Safari/532.3
Cache-Control: max-age=0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
If-None-Match: "b300b4-1b6-4059a80bfd280"
If-Modified-Since: Tue, 15 Nov 2005 13:24:10 GMT

Смотрите, нет #foobar. Таким образом, серверное приложение не может его прочитать.

Вы могли бы сделать некоторую магию JavaScript, чтобы сохранить привязку в cookie или в скрытом поле ввода, или в любом другом колдовстве, которым вы увлекаетесь. Но это никогда не будет работать для запросов, исходящих не с ваших собственных сайтов. Проще сделать все, что вам нужно, в серверной части строки запроса и использовать привязку только для задач, связанных только с JavaScript - или использовать ее для навигации внутри простого HTML-документа - но это так 90-е;).

Вот важное часть упомянутого RFC 1808: не считается частью URL. Однако, поскольку он обычно используется в том же строковом контексте, что и URL-адрес, синтаксический анализатор должен иметь возможность распознать фрагмент, когда он присутствует, и отложить его как часть процесс синтаксического анализа.

20
ответ дан 3 December 2019 в 04:52
поделиться

Это решение будет работать только после того, как была нажата кнопка отправки, но: вы можете использовать javascript, чтобы разместить скрытое значение на вашем form, для которого задано значение document.location. Это точно скажет вам, что браузер видит как ваш адрес.

0
ответ дан 3 December 2019 в 04:52
поделиться

Полагаю, вы хотите сделать Ajax веб-приложение с закладками и хотите заменять определенные фрагменты DOM без перезагрузки всей страницы. (Иначе вы могли бы использовать параметры запроса). Как упоминает sfussenegger, браузер не передает 'anchor' на сервер. Решение находится на стороне клиента.

Javascript window.location.hash передает информацию о якоре. Вы можете добавить обработчик события к событию window.onload, который получает window.location.hash и передает его на сервер в Ajax XHttpRequest. Вы ловите ответ и встраиваете его в DOM.

К сожалению, это два обхода между клиентом и сервером.

Подробнее об этом на ajaxpatterns.

3
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: