2011-08-15 21 views
3

私は、元のアプリケーションの一部である特定のページを参照するようにユーザーに電子メールを送信する必要があるWebアプリケーションを開発しています。次のようにアンカーのhrefを生成するために私の現在のコードは次のとおりです。プロキシを使用してリクエストURIを抽出する

String.Format("{0}{1}{2}{3}/{4}", 
    Request.Url.Scheme, Uri.SchemeDelimiter, Request.Url.Host, 
    Request.ApplicationPath, path); 

目的は、それは関係なく、私が開発サーバー、テストサーバーまたは上のサイトを実行していたかどうかの、正しい部位に仕事とのリンクというものでしたプロダクションサーバー。しかし、いくつかの欠点があり、私はいくつかの助けを求めています。

  1. Request.Url.Schemeはすべての場合に機能しません。当社のプロダクションサーバーにはhttps接続が必要です。プロキシはhttps接続をキャッチし、要求を復号化してWebサーバーに転送します。そのため、Request.Url.Schemeは常にhttp
  2. Request.Url.Hostが本番サーバーのローカルサーバー名を返しています。私はこれも代理問題に関連していると思う。
  3. 代わりにRequest.Headers["host"]を使用することを提案している別の投稿をお読みください。これが同じ問題を抱えているかどうかはわかりません。

HTTP/HTTPS、転送およびこのHAZ TEH codez(または右方向に私を指すことができます)のASP.Netの取り扱いの少しより多くの知識を持つ人をしていますか?

基本的に、ユーザーがdev.example.comのサーバーからhttpを使用して電子メールを受信すると、電子メールのUriはhttp://dev.example.com/page.aspxになります。ユーザーがプロダクションサーバーsecure.example.comをhttps(Webプロキシによって処理される)を使用している場合、リンクはhttps://secure.example.com/page.asxである必要があります。

答えて

2

プロキシのシングルサインの実装に関する私の経験から、元のリクエストに関する情報は転送されませんでした。私たちはhttpsの問題の周りには不幸な方法は見つけられませんでした。

私は100%ではありませんが、アプリケーションリクエストルーティングパッケージによって、HTML内の返されたURLがプロキシの外で動作するように書き換えられる可能性があると思います。例えば。 と返すと、https://server.com/page.aspxと書き換えられることがあります。さらに、私が信じているプロキシサーバー上でHTTP接続をhttpsにアップグレードするルールを指定することもできます。だから、あなたはhttpsにジャンプする最初のHTTPリクエストを持っています。

また、おそらくあなたのdevサーバは、これらの非常に問題のためにあなたのprodサーバに可能な限り近づきたいと思うでしょう。

+0

お返事ありがとうございます。私はこれを経営幹部に提案し、何が起こるかを見ていきます。あなたは開発者についての非常に良い点を作り、できるだけ緊密に一致していることを証明します。それはここでの問題です。私たちは絶えずそれを実現するためのリソースを得るために戦っています。 – Anthony

+0

これはどこでも同じです:)最終的には、より構造化されたリリース方法論に移行したときに、コンプライアンス上の理由から購入を検討していました。サイクルの後半に環境的なバグが発見されたため、放出された回数が何回見えたのか...突然それが重要になった。 –

関連する問題