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

Posted

技术标签:

【中文标题】即使启用了 SSL,Request.URL 也始终返回 http【英文标题】:Request.URL always returns http even though SSL is enabled 【发布时间】: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:“是的,它在默认端口下运行” 【参考方案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,而且域也发生了变化。原来是一个负载均衡器。

以上是关于即使启用了 SSL,Request.URL 也始终返回 http的主要内容,如果未能解决你的问题,请参考以下文章

即使启用了CORS,Web Api仍会始终发生403错误

Charles Proxy SSL:“未为此主机启用 SSL 代理”[关闭]

如何单独为子域名启用 SSL,即使用 HTTPS 访问

即使模拟设置为 Off,Settings.Secure.ALLOW_MOCK_LOCATION 也始终返回 1

为 SSL 套接字启用哪些密码套件?

如何启用 ssl_module apache