2010-11-25 16 views

Antwort

11

Anker oder URL-Fragmente, wie sie in RFC 1738 bezeichnet werden, werden nicht vom Client an den Server gesendet, wenn Sie eine Ressource anfordern. Die Argumentation besteht darin, dass Fragment-URLs verwendet werden, um einen Speicherort innerhalb einer Ressource und nicht eine andere Ressource auf dem Server zu identifizieren. Um den Standort in der Ressource zu identifizieren, muss der Client die vollständige Ressource vom Server abrufen, und dieser Prozess muss keine Übertragung von Informationen über das Fragment beinhalten (da dies dem Server nichts bedeutet).

Wenn Sie Informationen über die Abfragezeichenfolge mithilfe einer URL mit einem Fragment übermitteln möchten, müssen Sie sicherstellen, dass die Abfragezeichenfolge dem URL-Fragment vorangestellt ist. Dies könnte ein Fehler in Ihrem clientseitigen Code sein, wenn Sie die Anfrage selbst erstellen. Überlassen Sie die Anfrage Konstruktionslogik dem Browser, wenn Sie es sich leisten können.

Wenn Sie das Fragmentzeichen (#) an den Server senden möchten, müssen Sie es in der Abfragezeichenfolge codieren oder der Client (Browser) wird diesen Abschnitt der URL beim Senden einfach ignorieren die Anfrage an den Server.

Verwandte Fragen auf SO

  1. JSP Servlet anchor
  2. How to obtain anchor part of URL after # in php
2

Bedenken Sie, dass Anker ein clientseitiges Konzept sind und daher nicht auf der Serverseite verwendet werden sollten. Clients senden die Ankerdaten nicht an den Server. Sie können dies also nicht tun. Bessere Verwendung von Parametern.

+0

request.getRequestURI() gibt "m", ohne q = abc request.getQueryString() null zurück ... – koby

+0

@koby - ja, aktualisiert sehen. – Bozho

+0

Sind Sie sicher, dass es nicht an den Server gesendet wird? irgendwelche Dokumentation darüber? Wenn das sicher ist kann ich Javascript umleiten und das "#" durch ein "?" Ersetzen, aber ich bevorzuge es ohne Redirect (aus SEO Gründen). – koby

1

Sie können dies nicht tun. Die URI spec sagt:

Ein Verweis auf einen bestimmten Teil eines Dokuments, einschließlich der Fragmentbezeichner, sehen aus wie

http://www.myu.edu/org/admin/people#andy 

in welchem ​​Fall die Kette „#andy“ ist nicht auf die gesendeten Server, aber wird vom Client beibehalten und verwendet, wenn das gesamte Objekt abgerufen wurde.

Verwandte Themen