当前位置: 首页 > 面试题库 >

如何确定您是否在不使用$ _SERVER ['HTTPS']的情况下使用HTTPS

荀正谊
2023-03-14
问题内容

我在线上看过很多教程,说您需要检查$_SERVER['HTTPS']服务器是否通过HTTPS进行了安全连接。我的问题是,在我使用的某些服务器上,这$_SERVER['HTTPS']是一个未定义的变量,导致错误。我可以检查是否应该定义另一个变量?

为了清楚起见,我目前正在使用以下代码来确定它是否为HTTPS连接:

if(isset($_SERVER['HTTPS'])) {
    if ($_SERVER['HTTPS'] == "on") {
        $secure_connection = true;
    }
}

问题答案:

即使$_SERVER['HTTPS']未定义,这也应该始终有效 :

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}

该代码与IIS兼容。

1)如果通过HTTPS协议查询脚本,则设置为非空值。

2)请注意,当将ISAPI与IIS一起使用时,如果请求不是通过HTTPS协议发出的,则该值将为“ off”。(对于运行PHP作为Fast-
CGI应用程序的IIS7,已经报告了相同的行为)。

另外,$_SERVER['HTTPS']即使安全连接,Apache1.x服务器(以及损坏的安装)也可能尚未定义。尽管不能保证,但按照惯例,端口443上的连接可能使用安全套接字,因此需要进行额外的端口检查。

附加说明:如果客户端与服务器之间存在负载平衡器,则此代码不会测试客户端与负载平衡器之间的连接,而是测试负载平衡器与服务器之间的连接。要测试以前的连接,您必须使用HTTP_X_FORWARDED_PROTO标头进行测试,但这要复杂得多。



 类似资料:
  • 本文向大家介绍使用https,$_SERVER['HTTPS']却不等于on?,包括了使用https,$_SERVER['HTTPS']却不等于on?的使用技巧和注意事项,需要的朋友参考一下 目前有两台服务器,都是http和https协议共存。 但是部分程序遇到一些问题,因为PHP中有根据$_SERVER['HTTPS']来设置环境常量。 一台服务器可以拿到值为on,另外一台却是NULL。 一步步

  • 问题内容: 您如何确定大写锁定是否在使用JavaScript? 需要注意的是:我用google搜索了,找到的最佳解决方案是将事件附加到每个输入,然后每次检查所按字母是否为大写,如果是,则检查是否也按住shift键。如果不是,则必须打开大写锁定。这感觉真的很脏而且只是… 浪费 -当然有比这更好的方法了吗? 问题答案: 您可以尝试一下。添加了一个有效的示例。当焦点位于输入上时,打开大写锁定会使LED变

  • 问题内容: 在Mongoose的早期版本(针对node.js)中,可以选择使用它而不定义架构 但是在当前版本中,“ noSchema”功能已被删除。我的架构可能会经常更改,并且实际上不适合已定义的架构,因此,是否有一种新的方式在猫鼬中使用无架构的模型? 问题答案: 我想这就是您要寻找猫鼬严密的东西 选项:严格 严格选项(默认情况下启用)可确保未在架构中指定的添加到模型实例的值不会保存到数据库中。

  • 问题内容: 我已经使用flask-oauthlib实现了一个oauth2服务器和一个oauth2客户端。 当我尝试在本地测试时,客户端返回InsecureTransportError并告诉我应该使用https。 有没有办法在没有https的情况下在本地测试应用程序? 客户端运行在127.0.0.2:5000,服务器运行在127.0.0.1:5000。 问题答案: 你应注意,Oauth2通过SSL层

  • 问题内容: 如果要使用Linq-SQL,还必须将DB Table拖到设计器表面以创建实体类。 我一直喜欢我的应用程序中的完全控制权,并且不喜欢dotnet创建的类。 是否可以使用我自己的数据访问层实体类在Linq和DB之间提供此连接? 我该如何完成? 问题答案: 您可以使用Linq-to-SQL非常轻松地编写自己的类-只需使用一些属性绘制类即可。 例如,这是我的一个项目中有一个非常简单的表,它可以

  • 问题内容: 有没有一种方法可以确定给定的示例实体类: 所谓“新”,是指有人调用了新的A()甚至可能设置了名称,但从未保存或保留。 通常,人们可以检查id,但是我想要一种不需要id或getId()方法的解决方案。 基本上,即使在分离模式下,此实体也已持久化到数据库中。 @Version或getVersion也不是令人满意的解决方案。 也许是独立的|| isAttached可能有效,但是我不确定如何在