确定当前站点 URL 协议(http 或 https)对于确保安全且一致的网站运营。然而,在本地开发或没有 SSL 的情况下,测试此类函数的准确性可能具有挑战性。
提供的函数“siteURL”尝试根据是否存在建立协议$_SERVER 数组中的“HTTPS”键及其非空或“off”值。或者,它检查“SERVER_PORT”是否为 443。如果满足任一条件,则返回“https://”,否则返回“http://”。
在没有 SSL 的情况下,准确确定协议需要检查 $_SERVER 数组。但是,如果 SSL 处于活动状态,即使锚标记 URL 使用 http,服务器也会自动将 URL 转换为 https。因此,似乎没有必要检查协议。
为了解决这个问题,通过检查 $_SERVER 中的 HTTPS 和 HTTP 协议指示符提出了改进的实现大批。如果满足这些条件中的任何一个,该函数将返回正确的协议。
<code class="php">if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $protocol = 'https://'; } else { $protocol = 'http://'; }</code>
无论是否启用 SSL,此方法都可确保这两种情况的准确性。
以上是以下是一些标题选项,重点关注问题和解决方案: 选项 1(直接、简洁): 如何确定 PHP 中正确的站点 URL 协议(http 与 https) 选项 2(强调查的详细内容。更多信息请关注PHP中文网其他相关文章!