Domanda

Esiste un modo pulito per reindirizzare tutti i tentativi di accedere a una versione HTTP:// di un sito al suo equivalente HTTPS://?

È stato utile?

Soluzione

Penso che il modo più pulito sia quello descritto qui su IIS-aid.com.È solo web.config e quindi se cambi server non devi ricordare tutti i passaggi che hai eseguito con la pagina di errore personalizzata 403.4 o altre autorizzazioni speciali, funziona e basta.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Altri suggerimenti

La soluzione più semplice e pulita che ho trovato è stata quella di

  1. In Impostazioni SSL -> richiedi SSL

  2. Nelle pagine di errore -> Errore 403.4 -> Reindirizzamento al sito HTTPS

  3. Nelle pagine di errore -> Modifica impostazioni funzionalità...-> Imposta errori dettagliati per richieste locali e pagine di errore personalizzate per richiesta remota

Il vantaggio è che non richiede righe di codice aggiuntive.Lo svantaggio è che ti reindirizza a un URL assoluto.

Un modo pulito cambia solo lo schema URL da http -> https e lascia tutto il resto equivalente.Dovrebbe essere lato server in modo che non ci siano problemi con il browser.

JPPinto.com ha Istruzioni passo dopo passo su come ciò viene fatto, tranne per il fatto che utilizzano javascript (HttpRedirect.htm) invece di un reindirizzamento lato server.Per qualche motivo, non sono riuscito a far eseguire a IE il javascript se hai abilitato l'opzione "Mostra messaggi di errore HTTP descrittivi", che è attiva per impostazione predefinita.Un'altra cosa con lo script è che il reindirizzamento al percorso non funzionava nemmeno in FF o Chrome.Lo script reindirizza sempre a root.(Forse mi sono perso qualcosa, perché dovrebbe reindirizzare al percorso.)

Per questi motivi ho utilizzato una pagina ASP per il reindirizzamento.Lo svantaggio è ovviamente che ciò richiede l'attivazione dell'ASP classico sul server.

OpsanBlog ha un Script e istruzioni ASP che funzionano bene con IIS6.

Ho riscontrato alcuni problemi utilizzando questo metodo con IIS7.Principalmente problemi di interfaccia utente, poiché IIS7 rende davvero facile perdere qualcosa.

  • Innanzitutto, è necessario installare ASP come funzionalità del ruolo del server Web.
  • In secondo luogo, l'uso di una directory virtuale non non ha funzionato come previsto in IIS7 e non ho provato a eseguire il debug.Invece, ho inserito il file nella cartella root del sito e ho usato l'URL '/sslredirect.asp' nella pagina di errore 403.4 per fare riferimento.
  • Infine, la parte più difficile, tu NON deve applicare SSL per SSLRedirect.asp.Altrimenti riceverai un errore 403.4.Per fare ciò, seleziona il file in "Visualizzazione contenuto" di IIS7 e passa a "Visualizzazione funzionalità" in modo da poter modificare le impostazioni SSL per il singolo file e disabilitare la casella di controllo "Richiedi SSL".

Il gestore IIS dovrebbe mostrare il nome del file nell'intestazione.

Global.asax

protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}

Utilizzo l'asp classico (intranet) e sulle pagine che richiedono l'accesso il file di inclusione dell'accesso esegue il reindirizzamento:

if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then 
    Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if

Questo ovviamente non include i dati GET o POST.Quindi in effetti è un reindirizzamento pulito alla tua pagina protetta.

Penso che per "pulito" intendi come con un reindirizzamento 300.Configurazione per molti server e lingue Qui.

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