トップ回答者
httpsへのページ遷移について

質問
-
こんにちは、VBでASP.NET4.0のwebサイトを開発しています。
1点分からない個所があります。どなたか詳しい方教えていただけると有難いです。
TOPページや商品を紹介するようなページでは、先頭がhttpのURLですが、
個人情報を入力するページはhttpsで始まるURLにしたいと思います。
そこで開発端末のIIS上にwebサイトを配置し、自己署名入り証明書を作成して、SSL設定を行いました。
そして遷移先のURLの指定方法を次のように変更しました。
変更前:
<a id="A1" href="~/Top.aspx" runat="server">HOME</a>
<a id=" A2 " href="~/toiawase/Toiawase.aspx" runat="server">お問合せ</a>
変更後:
<a id="A1" href="http://localhost/MyWeb/Top.aspx" runat="server">HOME</a>
<a id="A2" href="https://localhost/MyWeb/toiawase/Toiawase.aspx" runat="server">お問合せ</a>
こうすると、変更後の書き方ではIIS上では、「id=A1」も「id=A2」も動作するのですが、
VSでのデバッグ時には両者ともエラーになってしまいます。
しかも「id=A1」は「404 not found」エラーで、「id=A2」の方は違ったエラーで、
「正常に接続できませんでした
localhost のサーバへの接続を確立できませんでした。
このサイトが一時的に利用できなくなっていたり、サーバの負荷が高すぎて接続できなくなっている可能性があります。しばらくしてから再度試してください。
他のサイトも表示できない場合、コンピュータのネットワーク接続を確認してください。
ファイアーウォールやプロキシでネットワークが保護されている場合、Firefox による Web アクセスが許可されているか確認してください。」
と表示されます。ズバリの回答も有難いですが、httpとhttpsのページが混在しているサイトを開発する時は、こうするといいよ、という方法でも構いません。よろしくお願い致します。
回答
-
web.config ファイルの appSettings 要素を,、開発環境では以下
のように設定して、本番環境で実際のドメインに書き換えてはい
かがですか?<appSettings>
<add key="Domain" value="localhost"/>
</appSettings>
a 要素への設定は以下のようにします(WebConfigurationManager が
属する名前空間の参照を忘れずに)。<a href="https://<%=WebConfigurationManager.AppSettings["Domain"]%>/default.aspx">default.aspx</a>
- 編集済み SurferOnWww 2012年1月5日 13:46 訂正
- 回答としてマーク ボビン 2012年1月10日 6:26
-
SSLのページから通常のページに戻るときにはhtt://というプロトコルを付けることも必要ですよね? トータルとして以下の記事が参考になると思います。
[ASP.NET]Webページに含まれるリンクを動的に変更するには?[C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/699httpfilter/httpfilter.html
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク ボビン 2012年1月10日 6:26
すべての返信
-
trapemiyaさん、ご返信ありがとうございます。
> localhostという記述が問題なのだと思います。
すみません、おかしいとは思いつつ他に思い浮かばないので、localhostで試していました。
デバッグ時にはlocalhost:54351とポートを追加すれば、遷移はできましたが、そもそもlocalhostではダメですよね。
<a id=" A2 " href="~/toiawase/Toiawase.aspx" runat="server" ssl="true">お問合せ</a>
↑このようなイメージで記述できたらいいのですが。。。
> デバッグを行う場合、localhostはそのデバッグを行っているコンピュータになりますが、そのコンピュータにおけるwebサーバーの設定はどのようになっているのでしょうか?
私が使用している開発端末(Win7)にIIS7.5をインストールしてwebサーバとしています。
デバッグ時のwebサーバはVSに付属している開発サーバです。
すみません、聞かれているwebサーバの設定とは、きっとこのことではないですよね?
お手数ですがもう少し噛み砕いていただけると助かります。
-
ASP.NET 開発サーバーには SSL 通信の機能はありません。
デバッグは開発サーバーで行っているとのことですが、IIS の
サイトまたはアプリケーションに設定してある Web アプリを
Visual Studio から起動して、開発サーバーを使用した場合と
同様にデバッグできます。
以下のページは Vista + IIS7 の場合ですが Win7 + IIS7.5
でもほぼ同じはずです。
Windows Vista での IIS 7.0 および Visual Studio を使用した
Web アプリケーションの実行
http://msdn.microsoft.com/ja-jp/library/aa964620.aspx
ただし、Home Premium 以下のバージョンに付属の IIS では、
Windows 認証の機能がないため、デバッグはできなかったと記
憶しています。
その場合は IIS Express が使えるそうです。
IIS Expressの紹介
http://www.atmarkit.co.jp/fdotnet/scottgublog/20100702iisexpress/iisexpress.html
- 編集済み SurferOnWww 2012年1月5日 12:01
- 回答としてマーク ボビン 2012年1月5日 12:32
- 回答としてマークされていない ボビン 2012年1月5日 12:32
-
SurferOnWwwさん、情報ありがとうございます。
確かに開発サーバにはSSL通信の機能がありませんでした。IISを使ってのデバッグが良さそうですね。
バージョンはprofessionalなのでIISでのデバッグはできました。
ただ、aタグのURLに指定する「localhost」のサーバー名の部分に何を指定すればいいかがわかりません。
開発サーバのIPアドレスと本番稼動時のIPアドレスを置換して切り替えるのは違うと思いますし。
皆様はどのように実装されていますでしょうか?
asp.netではないのですが、
<a href="https://<%= getServerName() %>/MyWeb/toiawase/Toiawase.aspx">お問合せ</a>
のような書き方を見つけました。
- 編集済み ボビン 2012年1月5日 12:44
-
別のアプローチでどうでしょう。IISの設定でSSL SettingsでRequire SSLと指定します。http://~でアクセスしてもhttps://~にリダイレクトされます。
というもの、<a>タグにhttps://~とハイパーリンクを書いたとしても、ユーザーがブラウザーにhttp://~と書き直してしまっては台無しです。(まぁ暗号化しないのがユーザーの意志なので尊重すべきという考え方もありますが) Require SSLとしておけば自動的にリダイレクトされるので安心かなと。
-
web.config ファイルの appSettings 要素を,、開発環境では以下
のように設定して、本番環境で実際のドメインに書き換えてはい
かがですか?<appSettings>
<add key="Domain" value="localhost"/>
</appSettings>
a 要素への設定は以下のようにします(WebConfigurationManager が
属する名前空間の参照を忘れずに)。<a href="https://<%=WebConfigurationManager.AppSettings["Domain"]%>/default.aspx">default.aspx</a>
- 編集済み SurferOnWww 2012年1月5日 13:46 訂正
- 回答としてマーク ボビン 2012年1月10日 6:26
-
佐祐理さん、SurferOnWwwさんありがとうございます。
> IISの設定でSSL SettingsでRequire SSLと指定します。
なるほど、自動的にリダイレクトする方法があるんですね。
今開発環境がないので、明日早速試してみます。
> <a href="http://<%=WebConfigurationManager.AppSettings["Domain"]%>/default.aspx">default.aspx</a>
この方法はほぼ思っていたような書き方のように思えます。
こちらも早速明日試したいと思います。
ありがとうございました。またご報告します。
-
SSLのページから通常のページに戻るときにはhtt://というプロトコルを付けることも必要ですよね? トータルとして以下の記事が参考になると思います。
[ASP.NET]Webページに含まれるリンクを動的に変更するには?[C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/699httpfilter/httpfilter.html
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク ボビン 2012年1月10日 6:26
-