即使启用了SSL,Request.URL始终返回http

8

我已经准备好了一个ASP.NET Web应用程序(ASP.NET V2.0),并在我的IIS(V7.5)中进行了配置。我在我的应用程序中使用Request.Url.AbsoluteUri,并且它在我的服务器上运行良好。我将Web应用程序部署到客户的服务器机器(2008 R2 Server)上。但是,在我的客户环境中,Request.Url.AbsoluteUri始终返回HTTP URL,即使他们启用了SSL。客户端的服务器机器是否配置了任何IIS设置?请指导我。


网站是否在HTTPS下运行?即浏览器地址栏是否显示“https://”? - James
你的应用程序运行的站点是否是普通的SSL设置?(即默认端口,站点配置与用户输入的地址相同) - Damien_The_Unbeliever
@James: "是的,它正在使用HTTPS运行,并且浏览器地址栏显示https://" - Suresh
@Damien_The_Unbeliever:“是的,它正在使用默认端口运行。” - Suresh
2个回答

12

我以前见过这种情况。原因是生产站点上的负载均衡器终止了SSL连接。它本身仅使用HTTP连接到IIS。这种方案是将SSL计算卸载到负载均衡器的一种方式。这意味着,尽管浏览器看到HTTPS协议,但IIS应用程序永远不会看到该协议。

正如spender在评论中指出的那样,请查看到达应用程序的HTTP头。负载均衡器很可能向其中添加信息,使您可以重构一切。


1
确实。我记得有一堆额外的标题以“x-forwarded”开头,由一些负载均衡器发送到Web服务器,这将帮助您确定原始请求是否通过https进行。+1 - spender
@usr:“感谢您的回复。我如何检测配置在我的客户端服务器上的负载均衡器?哪个HTTP头用于负载均衡?” - Suresh
  1. 询问客户端。
  2. 取决于设备。查看文档或仅转储所有标头。
- usr
1
@spender:能否请您告诉我确切的标题名称?因为我在我的iis设置中只看到了“X-Powered-By”标题,并且这在我的服务器上正常工作。我想在我的服务器上复制此问题。+1 - Suresh
这个救了我的一天。我遇到了完全相同的问题。在我的情况下,不仅协议从https切换到http,而且域名也改变了。结果是一个负载均衡器。 - NetWave

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接