Da qualche tempo alcuni utenti di alcuni miei servizi mi stavano segnalando errori in alcune pagine ASP.
In breve si trattava di una pagina ASP che dopo aver eseguito determinate operazioni (nello specifico eliminare alcuni files) avrebbe dovuto riportare l'utente alla pagina precedente.
Per fare questo, visto che il servizio in questione è lato server interamente operativo grazie ad ASP, ho utilizzato una delle server variables come segue
...
' un po di codice ASP
response.redirect(request.serverVariables("HTTP_REFERER"))
...
Il tutto sembra funzionare perfettamente. Il mio browser preferito è Firefox e tutto fila liscio come dovrebbe.
Non ho fatto altri test perchè l'applicazione non era poi così critica.
Ma alcuni utenti segnalano un errore e decido di controllare meglio.
Con il browser Opera funziona correttamente mentre Internet Explorer effettivamente da un errore e la cosa non è di poco conto visto che la maggior parte delle persone è costretta a dover utilizzare il browser Microsoft.
Faccio alcuni test. Creo 2 pagine nuove tanto per testare il meccanismo e questa volta funziona anche con Internet Explorer.
L'unica cosa di differente tra le 2 pagine di test e le pagine del servizio è una piccola parte di codice lato client scritta utlizzando Javascript.
Visto che si trattava dell'eliminazione di files ho voluto dare la possibilità all'utente di confermare la propria decisione

Il codice Javascript è qualcosa di simile a questo.
function eliminaCommento(var1,var2)
{
if (confirm("Sicuro???"))
{
location.href="indirizzo_file.asp?var1=" + var1 + "&var2=" + var2;
}
}
Proprio questo piccolo codice è la causa di tutti i mali.
Sembra che se si utilizza location.href per inviare l'utente ad un'altra pagina, Internet Explorer non sia in grado di determinare l'indirizzo della pagina referente.
I miei test si basano su prove fatte con Internet Explorer versione 6.x, non ho avuto modo di provarle con versioni più recenti come la 7.x o la nuovissima versione 8. Se avete esperienze in merito lasciate un commento.