2011-11-29 9 views
9

Ho un sito che, per progettazione e preferenza del cliente, può essere servito tramite HTTP o HTTPS. L'azienda cliente sceglie semplicemente se collegarsi o meno al nostro sito utilizzando http: // o https: // e IIS fa il resto. Una funzionalità viene aggiunta a una pagina che si occupa di informazioni riservate che dovrebbero essere sempre visualizzate su SSL. I clienti hanno convenuto che questa funzione aggiuntiva debba essere disabilitata su questa pagina quando non si utilizza una connessione HTTPS.Come si controlla se la pagina corrente utilizza SSL in ASP.Net?

Nell'evento Page_Load vorrei aggiungere un'istruzione IF che controlla se la pagina è attualmente visualizzata su HTTPS per mostrare o disabilitare questa funzione opzionale. Posso probabilmente leggere l'URL per vedere se inizia con https: //, ma temo che l'approccio sia insicuro.

Esiste una proprietà che può essere verificata per testare HTTPS durante l'evento Page_Load?

risposta

24

Stai cercando Request.IsSecureConnection.

+0

Grazie mille SLaks! – David

+0

Ma non funziona nell'ambiente del server di bilanciamento del carico. Per favore controlla questo post http://stackoverflow.com/questions/998397/why-does-request-issecureconnection-return-false-when-true-is-expected. Facciamo lo stesso problema –

1

Se si utilizza IIS 7 (o successivo) e si prevede di reindirizzare una richiesta che arriva alla pagina tramite una connessione HTTP a una connessione HTTPS, prendere in considerazione l'utilizzo di IIS URL Rewrite Module.

Sarai in grado di configurare una soluzione anziché codificarla. Ad esempio, è possibile configurare una regola di reindirizzamento per prendere un URL come http://my.host.com/my-secure-page.aspx e reindirizzare a https://my.host.com/my-secure-page.aspx.

Con questo modulo puoi fare molto di più e il bello è che puoi farlo senza toccare il codice dell'applicazione.

Vedere Redirect HTTP to HTTPS with IIS 7 per ulteriori dettagli.

Problemi correlati