3

外部アプリケーションに投稿するフォームがページにあり、その投稿でURLを送信する必要があります。ただし、一部のユーザーの場合、URLはhttps://mysubdomain.domain.com/Home/Actionではなくhttps:// localhost / Home/MyActionです。私はこれを再現することができませんでしたが、2人の同僚が私と同じネットワーク上でこれを一貫して取得しています。

<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"、 "Home"、null、 "https")
  • Url.Action( "MyAction"、 "Home"、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

なぜ一部のユーザーはこれでローカルホストをまったく見るのでしょうか?ホストされているサーバーからこのアプリケーションにアクセスしているユーザーはいません。

更新:内部的には、アプリケーションはhttps://mysubdomain.domain.com:445/のようなポート番号でアクセスされます。外部的には通常の443です:https ://mysubdomain.domain.com/ 。内部ユーザーの場合、Url.Actionは完全に正常に機能しています。外部ユーザーの場合、mysubdomain.domain.comをUrl.Actionに指定しても、ポート443を使用してアクセスするユーザーにはローカルホストが返されます。このMVCコードを調べたところ、ホスト名が上書きされる理由がわかりませんでした。仕様。

IISでHTTPSバインディングを確認しましたが、正しいSSL証明書を使用しています。どういうわけか、外部443から内部445へのポートフォワーディングがそれを壊しているのだろうか?

4

1 に答える 1

1

投稿でポートフォワーディングについて言及しています。このポートフォワーディングはどこで行われますか?IISボックスで実行された場合、誰かが次のように転送を構成した可能性はありますか。

https://mysubdomain.domain.com:445 -> http://localhost:443

これにより、URL解決でローカルホストが使用されますが、内部的にはポート転送が行われないため、正しいドメインが解決されます。

于 2012-03-23T13:46:17.520 に答える