首页 > 解决方案 > 如何使用 CGI 确定 URL 请求是否使用 HTTPS?

问题描述

我正在尝试将我们的网站从 HTTP 切换到 HTTPS。在某些情况下,我们需要站点使用 HTTP,而在其他情况下,我们需要使用 HTTPS。我打算使用 CGI 来确定请求是 HTTP 还是 HTTPS。

据我所知,JSON 请求必须与原始协议请求相匹配。如果您请求 HTTP://example.org,则必须使用 HTTP://example.org/file.JSON 调用 JSON。如果您请求 HTTPS://example.org/,则必须使用 HTTPS://example.org/file.JSON 调用 JSON。

通常,我会使用 CGI 变量来告诉我请求是 HTTP 还是 HTTPS。我可以测试 CGI.HTTPS 以查看它是打开还是关闭。我也可以检查 CGI.SERVER_PORT 看看它是 80 还是 443。我可以检查 CGI.SERVER_PORT_SECURE 看看它是 0 还是 1。

当我在每个浏览器中查看我们的网站时,我可以转储 CGI 变量并 100% 地得到我期望的结果。

当我们办公室和办公室外的其他几个人提出相同的请求时,他们会得到 CGI 变量值,表明他们的请求不安全。CGI.HTTPS 将炫耀。CGI.SERVER_PORT 将显示 40。CGI.SERVER_PORT_SECURE 将显示 0。每个其他指标都将显示该站点在每个浏览器中都是安全的,但 CGI 变量值表明它不安全。

对于开发和舞台的每个人来说,该网站的行为 100% 完美无缺。只有在负载均衡器后面的 live 中才存在这个问题(对于某些人)。

这是负载均衡器的问题吗?这是证书设置问题吗?为什么我的 CGI 变量对我撒谎?我该如何解决这个问题?

标签: coldfusioncgi

解决方案


推荐阅读