私は外部アプリケーションに投稿するページにフォームを持っており、その投稿にURLを送信する必要があります。ただし、一部のユーザーの場合、URLはhttps://mysubdomain.domain.com/Home/Actionではなくhttps://localhost/Home/MyActionです。私はこれを再現できませんでしたが、2人の同僚がこれと同じネットワーク上でこれを一貫して取得しています。なぜUrl.ActionとRequest.Url.Hostは "localhost"を返しますか?
<form action="https://externalapp.com/action.cgi" method="POST">
...
<input type="hidden" name="URL" value="@Url.Action("MyAction", "Home", null, "https")"/>
<input type="submit" value="Submit" />
</form>
私が試してみた:
- Url.Action( "MyAction"、 "ホーム"、ヌル、 "HTTPS")
- Url.Action( "MyAction"、 "ホーム" 、null、 "https"、Request.Url.Host)//ホストを指定しないと、MVCは私が信じるものです
- Url.Action( "MyAction"、 "Home"、null、 "https" 、Request.Url.Authority)
- Url.Action( "MyAction"、 "Home"、null、 "https"、Request.Headers ["host"])//いいえそのポートはURLに2回表示されます(例: https://mysubdomain.domain.com:4430/Home/Action。
なぜ、一部のユーザーはこれですべてlocalhostを参照しますか?どのユーザーも、ホストされているサーバーからこのアプリケーションにアクセスしていません。
更新:内部では、アプリケーションは、https://mysubdomain.domain.com:445/のようなポート番号でアクセスされます。外部的には、通常の443:https://mysubdomain.domain.com/です。内部ユーザーの場合、Url.Actionは完全に正常に動作しています。外部ユーザーの場合、Url.Actionにmysubdomain.domain.comを指定しても、ポート443を使用してアクセスするユーザーはlocalhostを返しています。私はMVCコードを見て、ホスト名を上書きする理由を理解できませんでした仕様。
IISでHTTPSバインディングがチェックされており、正しいSSL証明書を使用しています。どういうわけか外部443から内部445へのポート転送がそれを壊しているのだろうか?
私にはIIS設定のような音がします。私はMVCが何か特別なことをしているとは思わない。 – Dismissile
わかりやすくするためには、次のようにする必要があります: ' – Tr1stan
このアプリケーションのユーザーは、同じURL(例: 'https:// mysubdomain.domain.com')でアクセスしていますか? - コンピュータに固有のいくつかのユニークなDNSエントリがある可能性はありませんか、ドメインアカウントがありますか? – Tr1stan