我在页面上有一个表单,该表单发布到外部应用程序,我需要在该帖子中发送一个URL。但是,对于某些用户,网址为https://localhost/Home/MyAction而不是https://mysubdomain.domain.com/Home/Action。我无法重现这一点,但是有两个同事在我和我一样的网络上得到这个。
<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>
我试过了:
为什么有些用户会看到localhost呢?没有用户从托管它的服务器访问此应用程序。
更新:在内部使用https://mysubdomain.domain.com:445/等端口号访问应用程序。在外部,它只是正常的443:https://mysubdomain.domain.com/。对于内部用户,Url.Action工作得很好。对于外部用户,即使我将mysubdomain.domain.com指定为Url.Action,它仍然会返回使用端口443访问的localhost。我查看了MVC代码,我无法弄清楚为什么它会覆盖我的主机名说明书
我检查了IIS中的HTTPS绑定,并使用了正确的SSL证书。我想知道从外部443到内部445的端口转发是否会破坏它?
答案 0 :(得分:1)
您在帖子中提到了端口转发。这个端口转发在哪里完成?如果在IIS框中完成,是否有人可以像这样配置转发:
https://mysubdomain.domain.com:445 -> http://localhost:443
这会导致url解析使用本地主机,但在内部,端口转发不会发生,因此解析了正确的域。