0

asp.net を使用してプロジェクトを実行し、ライブに移行する準備ができました。現在、管理者は何らかの理由で SSL を使用することを決定したため、サイトは HTTPS でロードする必要があります。

プロジェクトは非常に大きく、すべてのページで URL を確認して HTTPS にリダイレクトするのは面倒なので、これをグローバルまたはマスター ページで処理できる簡単な方法はありますか?

したがって、Web サイトの URL が HTTP で入力されていても、HTTPS サイトにリダイレクトされるはずです。どうすればこれを達成できますか?

4

2 に答える 2

1

IIS6で使用する一般的なアプローチは、IISのサイトプロパティを使用してSSLを強制することです。これにより、ポート80でサイトにアクセスするすべてのユーザーに403エラーが生成されるため、次に、カスタムaspxページを登録して403エラーを処理し、ユーザーを安全なサイトにリダイレクトします。

  1. サイトの[プロパティ](IISの場合)、[ディレクトリセキュリティ]に移動し、[セキュリティで保護された通信で編集]をクリックして、[セキュリティで保護されたチャネル(SSL)を要求する]をクリックします。これにより、サイト全体でSSLが強制されます。今すぐサイトにアクセスすると、403;4エラーが発生するはずです。
  2. [カスタムエラー]タブに移動し、403; 4エラーを選択して、サイトのURL(例:/403.4.aspx)に設定します。
  3. この403.4.aspxページを作成します。最も単純な場合はそれだけResponse.Redirect("https://www.mydomain.com")ですが、正しいページにリダイレクトし、クエリ文字列を維持するものの方が優れています。現在、これをテストするための開発環境はありませんが、次のようになると思います。

    Response.Redirect( "https://" + Request.ServerVariables("HTTP_HOST") + Request.ServerVariables("URL") );

  4. IISに戻り、この403.4.aspxページでプロパティを設定して、セキュリティで保護されたチャネルを必要としないようにします。

これで、誰かがサイトの任意のページにアクセスしようとすると、IISはそれらを403.4.aspxページに送信し、安全なサイトにリダイレクトします。

于 2013-03-13T03:44:24.970 に答える
0

Nateが提案したようにIISごとに制御したくない場合は、次のコマンドでリダイレクトを実行できますglobal.asax

void Application_BeginRequest(Object sender, EventArgs e)
{
    if (Request.Url.Scheme != "https")
        Response.Redirect("https://yoursite.com");
}

最も機知に富んだ解決策ではないかもしれませんが、それは仕事をします。

于 2013-03-13T04:44:55.563 に答える