首页  >  文章  >  后端开发  >  以下是一些标题选项,重点关注问题和解决方案: 选项 1(直接、简洁): 如何确定 PHP 中正确的站点 URL 协议(http 与 https) 选项 2(强调查

以下是一些标题选项,重点关注问题和解决方案: 选项 1(直接、简洁): 如何确定 PHP 中正确的站点 URL 协议(http 与 https) 选项 2(强调查

DDD
DDD原创
2024-10-27 11:50:02114浏览

Here are a few title options, focusing on the problem and solution:

Option 1 (Direct and concise):
How to Determine the Correct Site URL Protocol in PHP (http vs https)

Option 2 (Emphasizing the challenge):
PHP: Accurately Detecting Site URL Protocol (h

PHP 获取站点 URL 协议 - http 与 https

问题介绍

确定当前站点 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn