3

質問が言うように、私のサイトにこのようなページのリクエストがある場合

http://somename.something.here/Dada.aspx

このようなものに

https://somename.something.here/Dada.aspx

4

6 に答える 6

11

(a) ローカル接続をリダイレクトせず (VS での開発を容易にするため)、(b) string.Replace の代わりに UriBuilder を使用することを好みます。これはもう少し正確だからです。

if (!Request.IsLocal && !Request.IsSecureConnection) {
    var ub = new UriBuilder(Request.Url);
    ub.Scheme = Uri.UriSchemeHttps;
    ub.Port = -1; // use default port for scheme
    Response.Redirect(ub.Uri.AbsoluteUri, true);
    return;
}
于 2008-12-18T14:41:35.383 に答える
0

しばらく前に同じ問題に取り組んだことを覚えています。特定のページがhttpsを超え、残りのページがhttpを使用していることを確認したかったのです。また、訪問者が安全である必要のないページのために安全なページを離れると、httpに戻ることを確認したかったのです。これを達成するために、私は2つのオプションを検討しました。

最初のオプションは、無料の.NET URLRewriterプロジェクトを使用して、構成ファイルで概説されている特定のページを書き換えることができました。

# HTTP REQUIRED PAGES
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !(/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ http://%3$1 [R=301,L]

# HTTPS REQUIRED PAGES
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} (/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ https://%3$1 [R=301,L]

この構成を使用すると、2つのページのみが安全であり、残りは安全ではないことを確認できます。このオプションで良い結果が得られました。

2番目のオプションは、この非常に問題を処理するための完全なソリューションを見つけた後に来ました。同社はSanibelLogicであり、 SSLRedirectという製品があります。このHTTPModuleベースのソリューションは、私が必要としていたことを正確に実行します。少しお金がかかりますが、実装と管理が簡単なものが必要な場合は、これで問題が解決する可能性があります。あなたがそれについて何かを編集したいなら、彼らはソースコードさえ提供します...

私は両方のオプションを何ヶ月も使用しましたが、その単純さのためにSSLRedirect製品を使用することになりました。

これがお役に立てば幸いです...

于 2009-02-07T00:11:30.647 に答える
0

私はちょうど同じ問題を抱えていましたが、純粋に IIS 構成を使用して別の解決策を見つけました。

次の 2 つの方法があります。

(1) 簡単な方法は、たとえばMyWebAppの名前をMyWebAppSSLに変更することです。後者のSSLを有効にします。次に、古いMyWebAppのような名前の新しい空のフォルダーを IIS に作成します。MyWebApp の [プロパティ] をクリックし、[ディレクトリ] で [ URL へのリダイレクト] を選択してそこに配置します。「永続的なリダイレクト」を有効にすることをお勧めします。ちなみに、 MyWebAppは Web アプリケーションではなく、単にリダイレクトするだけなので、[ Web アプリケーションの作成]ボタンをクリックする必要はありません。http://MyServer/MyWebAppSSL

(2) 単純な方法にはもちろん、アプリケーションが新しい名前 (この例では-SSLで終わる) で実行されるという欠点があります。同じ古い名前で実行し続ける必要がある場合は、IIS を構成するだけでも可能ですが、少し異なる方法で進める必要があります。別のポートで実行されている IIS に新しい Web スペースをセットアップする必要があります。この適切な説明を見つけました: How to Auto-Redirect to a SSL-secured Site in IIS .

于 2010-02-12T14:19:20.540 に答える
-1

リダイレクト ヘッダー (302) をブラウザーに送信します。

例:

Response.Redirect("WebForm2.aspx")

Server.Transfer と Response.Redirect の違いに関する記事

于 2008-12-18T14:24:11.907 に答える