Domanda

Il problema generale:

Abbiamo URL in arrivo sui nostri server Web IIS formattati come:

  

http://www.server.com/page.aspx

Stiamo anche vedendo che arrivano URL come questo:

  

http://www.server.com//page.aspx

Vorremmo sbarazzarci di quel carattere di percorso aggiuntivo perché quando l'agente utente è Internet Explorer, questo si sta risolvendo in 2 pagine diverse e, quindi, scaricando il contenuto due volte quando dovrebbe essere risolto da una cache.

Non sono sicuro se questo è un problema da risolvere con qualcosa come un modulo di riscrittura degli URL o se esiste un'impostazione di configurazione.

È stato utile?

Soluzione

Penso che il problema sia con IE e non con IIS.

La riscrittura degli URL di solito si riferisce al processo di mappatura di un URL da http: // example / shoes / clarkes a http: //example/shoes.aspx? maker = clarkes sul server in modo che il browser non lo sappia.

Quello che devi fare è Reindirizzare il browser da http://www.server.com//page.aspx a http://www.server.com/page. aspx utilizzando un 301 Http codice di risposta .

In teoria:

Poiché sembra che tu stia utilizzando ASP.NET, il modo più trasparente per farlo sarebbe scrivere HttpModule che verifica la presenza di doppie barre nell'URI richiesto e esegue il reindirizzamento.

Il modo più semplice per farlo è inserire del codice in Global.ascx. (cs | vb) per controllare l'URI richiesto su BeginRequest .

Ad ogni modo, il codice per eseguire il controllo sarebbe lo stesso.

In pratica:

È possibile che IIS o ASP.NET inghiottiscano il doppio "quot / /"; prima che tu abbia la possibilità di vederlo. Se è IIS, potrebbe essere necessario utilizzare un proxy davanti a IIS. Se è ASP.NET, potresti essere in grado di trovare un Estensione ISAPI che farà il lavoro per te.

Altre opzioni

Puoi

  • Suddividi la pagina in modo che la maggior parte delle singole risorse possa essere memorizzata nella cache separatamente dal contenuto html
  • Informa gli utenti che non hanno bisogno di aggiungere la barra.

Altri suggerimenti

Correggi i tuoi collegamenti!

Molto probabilmente stai vedendo la doppia barra perché hai collegamenti errati sul tuo sito, codificati o generati da script. È facile farlo per errore in uno script che concatena http://example.com/ + /page.aspx . Presta molta attenzione a questi tipi di concatenazioni!

IIS elimina le barre in eccesso e quindi questo non può essere risolto con alcun codice ASP.NET o HttpModule. Le barre extra non arrivano nemmeno al file di registro IIS. Ho provato usando IIS7 e telnet e non sono riuscito ad ottenere ulteriori barre nel registro o in ASP.NET.

Non sono sicuro del motivo per cui la domanda originale sembra coinvolgere solo IE. Sia IE che FF consentono ulteriori barre nell'URL e sembrano trasmetterle, anche se non ho usato lo sniffing dei pacchetti per verificare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top