为什么 Request.IsSecureConnection 在预期为 true 时返回 false

发布于 2024-07-24 07:51:53 字数 450 浏览 3 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

汹涌人海 2024-07-31 07:51:53

如果您的 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.

蓝咒 2024-07-31 07:51:53

某些负载均衡器会向请求添加新标头,您可以使用该标头来确定来自客户端的原始请求是否通过 SSL 发送。 对于 Azure 网站,以下代码似乎可以工作:

if (string.IsNullOrEmpty(Request.Headers["x-arr-ssl"]))
{
     // No SSL
}
else
{
     // Secure connection
}

其他一些负载均衡器可能使用另一个标头,例如 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:

if (string.IsNullOrEmpty(Request.Headers["x-arr-ssl"]))
{
     // No SSL
}
else
{
     // Secure connection
}

Some other load balancers may use another header, for example X-Forwarded-Proto.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文