Puis-je faire en sorte que IEMobile ne supprime pas le # de l'URL d'une redirection?
-
06-07-2019 - |
Question
Je rencontre un problème d'accès à IEMobile sur mon site. Une certaine redirection que j'utilise a un code de réponse 302 et les en-têtes (ouais, c'est app-engine):
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
Cela fonctionne bien pour la plupart des navigateurs. Entrez IEMobile (via Windows Mobile 6.1). Après avoir reçu cette réponse, IEMobile se dirige vers
http://localhost/games/edit-game.html?game=110&frame_to_edit=3
Notez le # input-top
manquant. Que puis-je faire?
La solution
La lecture de RFC2616 spécifie
Emplacement: absoluteURI
où l'URI absolu est défini par la RFC2396
En traçant la définition de absoluteURI, le caractère # ne fait pas partie de la définition de l'URI, cela est confirmé par la section 4.1
4.1. Identifiant de fragment
Quand une référence URI est utilisée pour effectuer une action de récupération sur le
ressource identifiée, facultatif identifiant de fragment, séparé de
l'URI par un hachurage ("#") caractère, se compose de
supplémentaires informations de référence à être interprété par l'agent utilisateur après l'action de récupération a été complété avec succès. En tant que tel, il ne fait pas partie d'un URI, mais est souvent utilisé en conjonction avec un URI.
En bref, le #fragment ne fait pas partie de l'URI et est supprimé du navigateur car il ne fait pas partie de l'en-tête Location:.
Autres conseils
Dave a raison, googler revient avec le même problème.
Solution de contournement laide: utilisez une balise META refresh au lieu de redirection si vous souhaitez prendre en charge ce navigateur.
Il y a peu de choses que vous puissiez faire. cela semble être un bug dans votre navigateur (les développeurs ont apparemment manqué un erratum RFC 2616).