【问题标题】:Request.URL always returns http even though SSL is enabled即使启用了 SSL,Request.URL 也始终返回 http
【发布时间】:2012-09-17 22:07:45
【问题描述】:

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

【问题讨论】:

  • 网站是否在 HTTPS 下运行?即浏览器栏是否显示https://
  • 它是在您的应用程序运行的站点上进行的纯 SSL 设置吗? (即默认端口,站点配置与用户类型相同的地址)
  • @James : "是的,它在 HTTPS 下运行,并且浏览器栏也显示 https://"
  • @Damien_The_Unbeliever:“是的,它在默认端口下运行”

标签: c# asp.net http https iis-7.5


【解决方案1】:

如果要检查请求是 HTTP 还是 HTTPS。你应该检查标题。下面的链接确实帮助我解决了它。

http://www.bugdebugzone.com/2013/12/identifying-https-or-ssl-connection-in.html

【讨论】:

    【解决方案2】:

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

    正如 spender 在 cmets 中指出的那样,请查看到达您的应用程序的 HTTP 标头。负载均衡器可能会向它们添加信息,以便您重建所有内容。

    【讨论】:

    • 确实如此。 IIRC 有一堆额外的标头开始“x-forwarded”,由一些负载平衡器发送到网络服务器,这将帮助您确定原始请求是否来自 https。 +1
    • @usr: "感谢您的回复。我如何检测它在我的客户端服务器上配置的负载均衡器?以及哪个 HTTP 标头用于负载均衡?
    • 1) 询问客户。 2) 取决于设备。查看文档或转储所有标题。
    • @spender:请告诉我确切的标题名称。因为我只在 iis 设置中看到标题“X-Powered-By”,并且在我的服务器中正常工作。我想在我的服务器中重现这个问题。 +1
    • 这拯救了我的一天。我有完全相同的问题。就我而言,不仅协议从 https 切换到 http,而且域也发生了变化。原来是一个负载均衡器。
    猜你喜欢
    • 2023-03-22
    • 2019-05-28
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2011-11-09
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多