为什么 Request.IsSecureConnection 在预期为 true 时返回 false
我有一个 aspx 页面正在检查 Request.IsSecureConnection 以确保它是真的,如果不是,它会重定向到安全页面 https://www.domain.com/page.aspx。
服务器为该域安装了 SSL 证书,浏览器显示挂锁图标。
相同的代码在不同的服务器上运行良好,但现在 Request.IsSecureConnection 始终返回 false。
我创建了一个完全空的 aspx 文件,它只打印 Request.IsSecureConnection 的返回值,但它仍然是 false,因此没有来自标准 http 请求的其他内容。
任何人都可以建议可能导致此问题的原因,或者给出任何提示,告诉我如何找出导致此问题始终返回 false 的原因?
I have an aspx page which is checking Request.IsSecureConnection to ensure it is true, if not it does a redirect to the the secure page at https://www.domain.com/page.aspx.
The server has an SSL cert installed for the domain, and the browser shows the padlock icon.
The same code ran fine on a different server, but now Request.IsSecureConnection always returns false.
I have created a completely empty aspx file, that just prints the return value of Request.IsSecureConnection and it is still false, so there is no other content coming from a standard http request.
Could anyone suggest what might be causing this, or give any hints on how I might find out what is causing this to always return false?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您的 Web 服务器前面有一个具有 ssl 终止功能的负载平衡路由器或类似路由器,那么从那里到您的 Web 服务器的连接将不会通过 SSL。 在这种情况下,您通常必须检查特定端口上的连接或负载均衡器设置的标头。
If there's a load balancing router or similar in front of your web server with ssl termination then the connection from there to your web server won't be over SSL. In this case you usually have to check for a connection on a specific port or for headers being set by the load balancer.
某些负载均衡器会向请求添加新标头,您可以使用该标头来确定来自客户端的原始请求是否通过 SSL 发送。 对于 Azure 网站,以下代码似乎可以工作:
其他一些负载均衡器可能使用另一个标头,例如 X-Forwarded-Proto。
Some load balancers add a new header to the request which you can use to determine if the original request from client came over SSL. With Azure websites the following code seems to work:
Some other load balancers may use another header, for example X-Forwarded-Proto.