coldfusion - 如何使用 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 变量对我撒谎?我该如何解决这个问题?
解决方案
推荐阅读
- java - JVM 堆大小不加起来
- regex - Pyspark:UDF 将正则表达式应用于数据帧中的每一行
- python - 我将如何循环 python 函数的特定部分?
- google-cloud-platform - 设置 `egress-settings=all` 不会让我的函数调用外部 API
- algorithm - 在彩色区域中绘制轮廓的算法
- java - 如何从 Json 中知道 SpringBoot 中的对象是哪个类?
- css - 延迟双变换
- sockets - 无法打开与系统消息总线的连接:无法连接到套接字 /var/run/dbus/system_bus_socket
- java - 使用实体列表和 c:foreach 循环的包装器时表单中的模型属性和路径
- mongodb - 文档的mongodb默认值不在数组中