¿Puedo hacer que IEMobile no elimine el # de la URL de una redirección?
-
06-07-2019 - |
Pregunta
Tengo un problema con IEMobile accediendo a mi sitio. Una cierta redirección que uso tiene un código de respuesta 302 y los encabezados (sí, eso es un motor de aplicaciones):
Server Development/1.0 Python/2.5.2 Date Tue, 04 Nov 2008 16:47:02 GMT Content-Type text/html; charset=utf-8 Cache-Control no-cache Location http://localhost/games/edit-game.html?game=110&frame_to_edit=3#input-top Content-Length 0
Esto funciona bien para la mayoría de los navegadores. Ingrese a IEMobile (a través de Windows Mobile 6.1). Al recibir esta respuesta, IEMobile se dirige a
http://localhost/games/edit-game.html?game=110&frame_to_edit=3
Tenga en cuenta el # input-top
que falta. ¿Qué puedo hacer?
Solución
Lectura de RFC2616 que especifica
Ubicación: absoluteURI
donde el URI absoluto se define por RFC2396
Rastreando la definición de absoluteURI, el carácter # no es parte de la definición de URI, esto se confirma en la sección 4.1
4.1. Identificador de fragmento
Cuando se usa una referencia URI para realizar una acción de recuperación en el
recurso identificado, el opcional identificador de fragmento, separado de
el URI por un rayado cruzado (" # ") carácter, consta de
adicional información de referencia para ser interpretado por el agente de usuario después la acción de recuperación ha sido completado con éxito. Como tal no es parte de un URI, pero a menudo es usado junto con un URI.
En resumen, el #fragmento es no parte del URI, y el navegador lo está despojando como parte del encabezado Ubicación:.
Otros consejos
Dave tiene razón, Google busca el mismo problema.
Solución fea: use una metaetiqueta de actualización en lugar de redirigir si desea admitir ese navegador.
Hay poco que puedas hacer; parece ser un error en su navegador (los implementadores aparentemente han perdido una errata RFC 2616).