Posso fare in modo che IEMobile non elimini il # dall'URL di un reindirizzamento?
-
06-07-2019 - |
Domanda
Sto riscontrando un problema con IEMobile durante l'accesso al mio sito. Un certo reindirizzamento che utilizzo ha un codice di risposta 302 e le intestazioni (sì, questo è il motore di app):
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
Funziona bene per la maggior parte dei browser. Immettere IEMobile (tramite Windows Mobile 6.1). Dopo aver ricevuto questa risposta, IEMobile si dirige verso
http://localhost/games/edit-game.html?game=110&frame_to_edit=3
Nota il # input-top
mancante. Cosa posso fare?
Soluzione
Leggendo RFC2616 specifica
Posizione: absoluteURI
dove l'URI assoluto è definito da RFC2396
Tracciando la definizione di absoluteURI, il carattere # non fa parte della definizione URI, questo è confermato dalla sezione 4.1
4.1. Identificatore di frammento
Quando viene utilizzato un riferimento URI eseguire un'azione di recupero sul
risorsa identificata, facoltativa identificatore di frammento, separato da
l'URI con un tratteggio incrociato (" # ") carattere, è costituito da ulteriori
informazioni di riferimento per essere interpretato dal programma utente dopo l'azione di recupero è stata completato con successo. Come tale, esso non fa parte di un URI, ma spesso lo è utilizzato insieme a un URI.
In breve, #fragment non è non parte dell'URI e viene rimosso dal browser come non parte dell'intestazione Location :.
Altri suggerimenti
Dave ha ragione, Google cerca di risolvere lo stesso problema.
Brutta soluzione: usa un tag meta refresh invece di reindirizzare se vuoi supportare quel browser.
C'è poco che puoi fare; sembra essere un bug nel tuo browser (sembra che gli implementatori abbiano perso un errore RFC 2616).