Passare a SSL utilizzando un URL relativo

Vorrei creare un collegamento relativo che cambi il protocollo corrente da http a https . L’ultimo posto in cui ho lavorato aveva qualcosa impostato sul server in modo che tu potessi farlo, ma non me ne ricordo molto e non ho mai saputo come funzionasse.

La logica per questo è che non avrei bisogno di hardcode i nomi dei server nei file che devono spostarsi tra gli ambienti di produzione e di sviluppo.

C’è un modo per farlo funzionare in IIS 6.0?


Modificare:

Sto usando .NET, ma il “link” che sto creando non verrà generato dynamicmente. Se vuoi davvero i dettagli nitidi, sto usando una macro di reindirizzamento in Umbraco che richiede l’invio di un URL.

Ecco una soluzione semplice in VB.NET:

Imports System.Web.HttpContext Public Shared Sub SetSSL(Optional ByVal bEnable As Boolean = False) If bEnable Then If Not Current.Request.IsSecureConnection Then Dim strHTTPS As String = "https://www.mysite.com" Current.Response.Clear() Current.Response.Status = "301 Moved Permanently" Current.Response.AddHeader("Location", strHTTPS & Current.Request.RawUrl) Current.Response.End() End If Else If Current.Request.IsSecureConnection Then Dim strHTTP As String = "http://www.mysite.com" Current.Response.Clear() Current.Response.Status = "301 Moved Permanently" Current.Response.AddHeader("Location", strHTTP & Current.Request.RawUrl) Current.Response.End() End If End If End Sub 

Uso:

 'Enable SSL SetSSL(True) 'Disable SSL SetSSL(False) 

Puoi aggiungerlo alla pagina Page_Load di ciascuna delle tue pagine. Oppure potresti fare qualcosa come ho fatto io e creare un elenco di cartelle o pagine che vuoi proteggere nel tuo global.asax e impostare l’SSL di conseguenza nel metodo Application_BeginRequest. E questo funzionerà con i collegamenti relativi e lo stato HTTP o HTTPS di una pagina sarà sempre quello che tu dici di essere nel codice.

Ho questo codice in atto su diversi siti web. Ma ad esempio, se vai su https://www.techinsurance.com noterai che reindirizza automaticamente a http perché la home page non ha bisogno di essere protetta. E il contrario accadrà se proverai a colpire una pagina che deve essere protetta come http://www.techinsurance.com/quote/login.aspx

Potresti notare che sto utilizzando reindirizzamenti 301 (permanenti). Il vantaggio collaterale qui è che i motori di ricerca aggiorneranno il loro indice basato su un codice di reindirizzamento 301.

Quale lingua / struttura stai usando?

Dovresti essere in grado di creare la tua funzione in cui passi nella pagina relativa e deduci dall’object HttpRequest e dall’object Server (sempre in base alla lingua o al framework) l’host e l’URL e poi semplicemente reindirizza a quello URL ma con https come prefisso.

Ecco un buon articolo di CodeProject su come farlo specificando determinate directory e file che si desidera utilizzare SSL. Passerà automaticamente da e verso https in base alle tue esigenze.

Ho usato questo per un progetto, e funziona davvero bene.

Questa è la stessa risposta che ho dato qui :

Si, puoi. Raccomando questa DLL open source gratuita che ti consente di indicare quali pagine e cartelle hanno bisogno di SSL e quali no:

http://www.codeproject.com/KB/web-security/WebPageSecurity_v2.aspx

Quindi puoi configurare una pagina per essere sicuro nel tuo web.config in questo modo:

      

Abbiamo finito per acquistare ISAPI Rewrite per eseguire reindirizzamenti a livello di server Web per determinati URL. Non è esattamente la risposta che stavo cercando quando ho posto la domanda, ma è ciò che funziona per noi.