Sé por el lado del cliente (javascript) que puede usar windows.location.hash pero no pudo encontrar de todos modos para acceder desde el lado del servidor.Cómo obtener Url Hash (#) desde el lado del servidor
Respuesta
Tuvimos una situación en la que necesitábamos mantener el hash de URL en las publicaciones de ASP.Net. A medida que el explorador no envía el hash al servidor por defecto, la única manera de hacerlo es utilizar algo de JavaScript:
Cuando el formulario envía, agarra el hash (
window.location.hash
) y almacenarlo en un servidor campo de entrada oculta oculto Pon esto en un DIV con una identificación de "urlhash
" para que podamos encontrarlo fácilmente más tarde.En el servidor puede usar este valor si necesita hacer algo con él. Incluso puede cambiarlo si lo necesita.
En la página cargar en el cliente, compruebe el valor de este este campo oculto. Deseará encontrarlo en el DIV que contiene, ya que no se conocerá el ID generado automáticamente. Sí, podría hacer algún truco aquí con .ClientID pero nos pareció más sencillo usar el envoltorio DIV, ya que permite que todo este Javascript viva en un archivo externo y se use de forma genérica.
Si el campo de entrada oculto tiene un valor válido, establecer que a medida que el hash URL (
window.location.hash again
) y/o llevar a cabo otras acciones.
Utilizamos jQuery para simplificar la selección del campo, etc ... en definitiva termina siendo algunos jQuery llama, uno para guardar el valor, y otro para restaurarlo.
Antes de presentar:
$("form").submit(function() {
$("input", "#urlhash").val(window.location.hash);
});
al cargar la página:
var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
window.location.hash = hashVal;
}
IsHashValid()
puede comprobar "undefined
" u otras cosas que no desea manejar.
Además, asegúrese de utilizar apropiadamente el $(document).ready()
, por supuesto.
Gran solución, pero ¿qué pasa con la solicitud GET? – Warlock
Sin obtener solicitudes, esta solución no es nada. –
@Chris - ¿Pero cómo se llama al evento form-submit cuando simplemente se pega la URL en un navegador diferente (porque es solo una solicitud GET)? – KrishPrabakar
Eso es porque el navegador no transmite esa parte al servidor, lo siento.
RFC 2396 sección 4.1:
Cuando se utiliza una referencia URI para realizar una acción de recuperación en el recurso identificado, el identificador de fragmento opcional, separado de el URI por una marca de rayitas cruzadas ("#") carácter , consiste en información de referencia adicional para ser interpretada por el agente de usuario después de que la acción de recuperación se haya completado con éxito. Como tal, no es parte de un URI, pero a menudo se usa junto con un URI.
(énfasis añadido)
Estoy sorprendido. He leído mucho sobre SPA y no sabía eso. ¿Entonces el navegador envía tanta información sensible pero no el hash? Creo que debería ser en el futuro ... al menos como un encabezado HTTP separado. Esto está relacionado con: http://www.onebigfluke.com/2015/01/experimentally-verified-why-client-side.html?m=1 – bodrin
Probablemente, la única opción es para leerlo en el lado del cliente y transferir manualmente al servidor (GET/Post/Ajax). Saludos Artur
Usted puede ver también cómo jugar con botón de retroceso y el historial del navegador at Malcan
Sólo para descartar la posibilidad de que no está intentando realmente ver el fragmento de un GET/POST, y de hecho desea saber cómo acceder a esa parte de un objeto URI que tiene dentro de su código de servidor, está bajo Uri.Fragment (MSDN docs).
IE8, Chrome y Firefox no enviarán el hash al servidor; por lo tanto, el Fragmento Uri siempre es una cadena vacía si examina Request.Url.Fragment en el lado del servidor (según las respuestas anteriores). – zcrar70
solución posible para peticiones GET:
Nueva Enlace formato: http://example.com/yourDirectory?hash=video01
llamar a esta función hacia la parte superior del controlador o http://example.com/yourDirectory/index.php
:
function redirect()
{
if (!empty($_GET['hash'])) {
/** Sanitize & Validate $_GET['hash']
If valid return string
If invalid: return empty or false
******************************************************/
$validHash = sanitizeAndValidateHashFunction($_GET['hash']);
if (!empty($validHash)) {
$url = './#' . $validHash;
} else {
$url = '/your404page.php';
}
header("Location: $url");
}
}
- 1. Cómo mostrar el mensaje emergente desde el lado del servidor
- 2. ¿Por qué la parte hash de la URL no está en el lado del servidor?
- 3. Cómo cerrar Extensor emergente modal desde el lado del servidor
- 4. Evento del servidor ASP.net manejado desde el lado del cliente
- 5. ¿Cómo desencadenar un evento del lado del servidor desde javascript?
- 6. Método no estático en el lado del servidor desde el lado del cliente usando JavsScript
- 7. ¿Cómo funciona el lado del servidor GZipping?
- 8. Enviar solicitudes de aplicaciones desde el lado del servidor
- 9. GWT: Obtener constantes en el lado del servidor
- 10. HTML5 - lado del servidor
- 11. Análisis del lado del servidor
- 12. Rendering HTML + Javascript del lado del servidor
- 13. Método del lado del servidor y del lado del cliente
- 14. GWT I18N en el lado del servidor
- 15. Ruby: del lado del cliente o del lado del servidor?
- 16. ¿Puedo leer la parte hash de la URL en mi aplicación del lado del servidor (PHP, Ruby, Python, etc.)?
- 17. CSS en el lado del servidor?
- 18. Valora contraseñas hash en el lado del cliente
- 19. Web Charting, lado del servidor o del lado del cliente?
- 20. Comprobación del lado del servidor frente al lado del agente
- 21. lado del servidor MVC + lado del cliente MVC
- 22. Auto-minify del lado del servidor?
- 23. ¿Cómo se manejan los errores del lado del servidor en el patrón Publicar/Redirigir/Obtener?
- 24. ¿Cómo puedo obtener la URL del servidor en ejecución
- 25. Obtener URL de iframe y actualizar el hash en la URL del navegador
- 26. lado del servidor JavaScript - general
- 27. ASP.NET equivalente del lado del servidor incluye
- 28. ¿Cómo uso un DataPager con paginación del lado del servidor?
- 29. Paginación: ¿lado del servidor o lado del cliente?
- 30. Escaneo de virus del lado del servidor
sacaste una manera aruond este problema, no tengo los marcadores tienen en la url y quieren acceder al texto después del hash en el lado del servidor? – dotnetcoder
Las respuestas explican que esto no está disponible en el servidor, ya que solo se interpreta por agente de usuario. Intentaba cambiar la pestaña activa, que intentaba hacer en el servidor. Terminé haciéndolo en el lado del cliente. –
Posible duplicado de [¿Puedo leer la parte hash de la URL en mi aplicación del lado del servidor (PHP, Ruby, Python, etc.)?] (Http://stackoverflow.com/questions/940905/can-i-read -the-hash-portion-of-the-url-on-my-server-side-application-php-ruby) –