11
votes

Obtenez une ancre d'Uri

J'écris un jsp / servlet et j'essaie d'obtenir la partie d'ancrage de l'URI E.G:

blabla.rdf#mark


1 commentaires

Voici une question similaire pour PHP, avec une réponse similaire perçue: Stackoverflow.com/Questtions/1032242/...


3 Réponses :


20
votes

Ce n'est pas possible car les clients n'envoient pas la "partie d'ancrage" au serveur

comme exemple, voici la demande exacte que Chrome générée après la soumission http://example.com/# foobar (enregistré à l'aide de Wireshark): xxx

voir, no #foobar. Il n'ya donc aucun moyen d'une application de serveur peut le lire.

Vous pouvez faire de la magie JavaScript pour stocker l'ancre dans un cookie ou dans un champ de saisie caché ou tout ce que vous êtes dans le VOODOO. Mais cela ne fonctionnera jamais pour les demandes qui ne sont pas originaires de vos propres sites. Il est plus simple de faire tout ce dont vous avez besoin sur la partie serveur de la chaîne de requête et utilisez l'ancre uniquement pour les tâches JavaScript uniquement - ou utilisez-la pour naviguer dans un simple document HTML - mais c'est tellement 90;).

Voici la partie importante du RFC mentionné 1808:

Notez que l'identifiant de fragment (et le «#» qui le précède) est pas considéré comme une partie de l'URL. Cependant, comme il est couramment utilisé Dans le même contexte de chaîne qu'une URL, un analyseur doit pouvoir être capable de reconnaître le fragment quand il est présent et le mettre de côté dans le cadre de le processus d'analyse.


1 commentaires

Pour information, le RFC 1808 qui explique pourquoi la partie d'ancrage n'est pas envoyée au serveur.



0
votes

Cette solution ne fonctionnerait que après un bouton d'envoi a été poussée, mais: vous pouvez utiliser JavaScript pour placer une valeur cachée sur votre formulaire défini sur la valeur du document.Location. Cela vous dirait exactement ce que le navigateur constate comme votre adresse.


0 commentaires

3
votes

Je suppose que vous voulez créer une application Web Ajax bookmable et vous souhaitez remplacer certains fragments du DOM sans recharger la page complète. (Sinon, vous pouvez utiliser des paramètres de requête.) Comme Sfussenegger Mentions, le navigateur ne transmet pas ' ancreur ' sur le serveur. La solution est sur le côté client.

JavaScript window.location.hash donne les informations d'ancrage. Vous pouvez ajouter un gestionnaire d'événements à l'événement window.onload qui attrape window.location.hash et le transmet au serveur dans un AJAX XHTTPQUEST. Vous attrapez la réponse et construisez-le dans le DOM.

Malheureusement, il s'agit de deux demi-chaînes client-serveur.

Plus sur ceci à Ajaxpatterns .


0 commentaires