HttpContext.Current.Request.Url.Host が Web ブラウザーで使用される URL とは異なる URL を返すのはなぜですか? たとえば、ブラウザに「www.someurl.com」と入力すると、HttpContext.Current.Request.Url.Host 変数は「www.someotherurl.com」と等しくなります。
1 に答える
HttpContext.Current.Request.Url.Host
ASP.netアプリケーションが受信するHostヘッダーの内容です。(のようなHTTPヘッダーの詳細については、 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlHost
を参照してください)。
通常、ASP.NETHost
に表示されるヘッダーは、ブラウザーによって送信されるヘッダーと同じです。ただし、ソフトウェアまたはハードウェアがブラウザーとASP.netコードの間にあり、Host
ヘッダーを書き換えている場合は、それらが一致しない可能性があります。
たとえば、GoDaddyのような大規模な予算のホスティング業者はこれを行うため、より安価なホスティングプランであっても、単一のIISWebサイトで複数のトップレベルドメインをサポートできます。別のIISWebサイトを作成する代わりに(サーバーの負荷が増加し、コストが増加します)、GoDaddyはhttp://secondsite.com/の要求を、「メイン」のホストサイト(http://firstsite.comなど)の仮想ディレクトリに再マップします。 / secondsite)。Host:ヘッダーとURLの両方が変更されます。
ところで、アプリが受信しているHTTPリクエストヘッダーのコンテンツをダンプすることで、これが起こっていることを簡単に確認できます。
とにかく、誰がホストヘッダーを変更しているかを把握したい場合は、Webアプリをホストしている人(またはロードバランサーやリバースプロキシを担当しているチーム)から始めてください。ホストヘッダーを書き換えるため。