PHP headers_list() 未显示所有标头

2023-12-07

根据文档:http://php.net/manual/en/function.headers-list.php,以及这条评论:http://php.net/manual/en/function.headers-list.php#110330,php代码:

<?php var_dump(header_list()); ?>

不显示状态标题。


这种奇怪的行为很奇怪。那么有两个问题:

  1. Why?(我不确定这个问题是否基于意见,如果是,并且没有真正的解释,请忽略它。我的意思是,有时基于意见的问题不是基于意见的,并且确实有解释,这是无法预测的在他们被问到之前)。
  2. 我知道我可以使用自己的函数来设置标头,这将设置标头并另外记住该标头已设置。但这是一种...解决方法,因为 header_list() 非常确定在这里,为此。此外,这些标头位于 php 引擎内存中的某个位置,因此在脚本中第二次保存它们的内存效率不高。所以...获取所有标头的后门是什么,不像下面的解决方法那么愚蠢?例如,这可以用作调试/开发人员类的一部分,该类将所有“开发人员”数据呈现为页面末尾的 html 注释。当然,我省略了内容长度标头,这还为时过早预测。
  3. 看起来这个函数省略了所有没有冒号的标题...是吗?

要发布更多代码,请使用标头函数的简单解决方法(线性而不是对象,使用全局变量而不是静态类只是为了展示想法)。假设标头函数省略不带冒号的标头(这可能不完全正确......):

<?php
    // Mechanism:
    $headers = array();
    function setHeader($header) {
        header($header);
        if (strpos($header, ':') === false) {
            global $headers;
            $headers[] = $header;
        }
    }
    function getHeaders() {
        global $headers;
        return array_merge($headers, header_list());
    }

    // Example:
    setHeader('HTTP/1.1 404 Not Found');
    var_dump(getHeaders());
?>

检查引擎源headers_list and http_response_code,请注意通用标头和状态代码的值是分开的:

// headers_list
SG(sapi_headers).headers

// http_response_code
SG(sapi_headers).http_response_code

但 HTTP 响应代码并不是唯一具有专用存储的标头:Content-Type 也是如此:

SG(sapi_headers).mimetype = NULL;

那么这是怎么回事呢?这完整的 header() 算法特别检查以下字符串来调整状态:

  • HTTP/
  • Content-Type
  • Content-Length
  • Location
  • WWW-Authenticate

HTTP/被专门检查,因为这是在 PHP 5.4 之前显式设置状态代码的方式:之后,http_response_code可用并为清晰起见推荐。那header()被使用是令人困惑的,因为你在这个问题中提出的原因和一般原则是:http 标头 BNF显然不包括状态行:

header-field   = field-name ":" OWS field-value OWS

PHP 单独处理其他的,因为它们是单值标头和/或它们的值对于后续计算的效率很重要。

TL;DR: HTTP/ set by header()不包含在headers_list()因为HTTP/状态行不是严格 RFC 意义上的标头。但对于 PHP header()是唯一的设置方法 HTTP/状态,它可能从来都不是一个令人困惑的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP headers_list() 未显示所有标头 的相关文章

  • 克隆和引用传递问题

    所以在过去的几天里 我一直在绞尽脑汁地试图让一个类能够正确克隆 问题是克隆不会删除 重做任何引用传递 结果是 主数据对象仍然作为引用传递 从而完全抵消了克隆的效果 这是问题的简化版本 class my class private data
  • Codeigniter:Base_url 似乎不起作用

    我开发了一个简单的网站 可以从 Twitter 公共时间线获取推文 将其缓存 60 秒等等 我最近将主机从 Hostgator 移至 Mediatemple 我的网站之前在 Hostgator 上运行良好 我的应用程序不使用数据库连接 也不
  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • 查找 C# 列表中重复项的数量

    我在 C 中使用列表 代码如下 测试用例 cs public class TestCase private string scenarioID private string error public string ScenarioID ge
  • XP及PHP MYSQL 练级系统

    我已经查看了所有提出的问题和答案 但我似乎找不到最适合我的答案 我想做的是开发一个系统 当用户达到一定的 XP 限制时 系统会进入下一个级别 它显示了下一个 XP 之前需要多少 XP So lvl1 0 gt lvl2 256 gt lvl
  • 如何使用 jquery ajax 将锚点的值发送到 php

    我正在尝试使用 jquery 将几个锚点的值发送到 php 文件 但我没有从 php 脚本中得到回调 div class result div a href value class star Star 5 a a href value cl
  • php递归合并

    我需要以某种不同的方式合并一些数组 我使用 array merge recursive 然而 有一些事情我需要改变 但我不知道如何改变 这是来自 php net 的引用 但是 如果数组具有相同的数字键 则后面的值 不会覆盖原始值 但会追加
  • 为什么使用闭包进行赋值而不是直接将值赋给键?

    我当时正在看在 7 10 他添加了一个数据库依赖项并使用闭包来分配值 我的问题是为什么不直接使用直接赋值 我的意思是不这样做 container db capsule 相当于这样做 container db function contain
  • 同一路由组的多个前缀

    我正在为一所学校编写一个相当简单的网站 该网站有新闻 文章 视频剪辑 等 它的工作方式是在主页中我们向访问者展示一些课程 例如 gt math gt geography gt chemistry 用户在其中选择 1 网站内容会根据用户的选择
  • PHP 中的抽象类是什么?

    PHP 中的抽象类是什么 如何使用 抽象类是至少包含一个抽象方法的类 该方法中没有任何实际代码 只有名称和参数 并且已被标记为 抽象 这样做的目的是提供一种模板来继承并强制继承类实现抽象方法 因此 抽象类是介于常规类和纯接口之间的东西 此外
  • PHP别名@函数

    我是 PHP 新手 看到一些使用 前缀调用函数 如 mysql ping 的示例 我感到很困惑 它是做什么用的 谷歌搜索 搜索没有太大帮助 因为 被丢弃并且 别名 不是足够好的关键字 抑制错误 警告和通知 如果你用自定义的方式补充它 你可以
  • 无法在 PHPUnit 中使用数据提供程序运行单个测试

    使用命令行运行测试时遇到问题 如果我像这样运行 phpunit phpunit no configuration filter testAdd DataTest DataProviderTest php 效果很好 但是我们使用正则表达式来准
  • PHP函数返回值到html标签

    我想获取函数的返回值并将其显示到特定的id 在我的 Class php 中 我有一个名为 login 的函数 用于验证密码是否正确 不正确
  • PHP多图像文件上传并存储到文件夹和数据库

    我正在建立一个网站 向夜间狂欢者展示大城市夜总会场所和活动的列表 我正在尝试构建一个后端页面 管理员可以在其中添加俱乐部并输入信息 例如机构名称 位置 相对价格等 当然还有俱乐部的一些图像 每个俱乐部必须至少有一张图像 即主图像 可以有额外
  • 如何检查一个值是否已经存在以避免重复?

    我有一个 URL 表 但我不想要任何重复的 URL 如何使用 PHP MySQL 检查给定 URL 是否已在表中 如果您不想重复 可以执行以下操作 添加唯一性约束 use REPLACE http dev mysql com doc ref
  • 除括号之间的内容外,所有内容均小写

    考虑以下字符串 LoReM FOO IPSUM dolor BAR Samet fooBar 我正在寻找一种方法来小写所有内容 除了 brackets 之间的内容应该被忽略 所以期望的输出是 lorem FOO ipsum dolor BA
  • 表单提交后显示 $_FILES['image']

    提交表单后如何显示上传的图片 提交表单后 它将是一个预览页面 因此我不会在 MySQLet 中存储图像类型 BLOB 如何显示 FILES image
  • PHP 中的简单 JSON 请求

    我有以下 json country code latitude 45 9390 longitude 24 9811 zoom 6 address city country Romania country code RO region 我只想
  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应
  • 在 PHP 命令行上显示完整的堆栈跟踪

    Problem 我的 PHP 堆栈跟踪缩写为 Stack trace 0 www html table app create php 128 SoapClient gt call call Array 1 www html table ap

随机推荐

  • 在 matplotlib 中使用更多颜色进行绘图

    我正在尝试使用 matplotlib 绘制散点图 但收到 IndexError 从空列表中弹出 错误 我不知道如何修复它 import matplotlib pyplot as plt import matplotlib import nu
  • 表格单元格在行内右对齐

    我试图弄清楚如何将单元格移动到 HTML 表格的左侧 我想在最后一行使用更少的单元格 默认情况下它位于右侧 例如我有这张表 table tr th one th th two th th three th tr tr td one td t
  • Android v2 MapFragment 在 Scrollview 中滚动时抖动

    我正在使用 SupportMapFragment 在 ScrollView 中显示静态地图 我不喜欢移动 缩放地图 只显示位置 当我向下 向上滚动时 地图在其边界内晃动 感觉非常滞后 我的问题是 如何消除这种滞后 或者如何使用 v2 api
  • 在 Java 中 Ping 多个服务器 [重复]

    这个问题在这里已经有答案了 我有一个程序可以向服务器发送 ping 请求 该列表很大 如果IP无法到达 需要时间才能转到下一个IP 我希望 对于每一个IP 它应该创建一个新线程并同时处理所有线程 这是代码 for int i 0 i lt
  • Jackson @JsonProperty(required=true) 不会抛出异常

    我正在使用 jackson 2 2 注释 JsonProperty 并将 required 设置为 true 通过 ObjectMapper readValue 方法反序列化不包含该属性的 json 文件时 不会引发异常 它应该以不同的方式
  • 在 SQL Server 中执行列值[重复]

    这个问题在这里已经有答案了 我需要对 SQL 表中保存的值进行算术运算 例如 我在下一列中的值为 5 10 我想要 15 EQUATION VALUE 2 5 7 6 8 14 根据方程式我需要计算该值 正如您现在所知 SQL Server
  • 在运行时修改类定义的注释字符串参数

    想象一下有一个类 Something someProperty some value public class Foobar 它已经编译 我无法控制源代码 并且是 jvm 启动时类路径的一部分 我希望能够在运行时将 某些值 更改为其他值 这
  • 过程中表值参数中的标识列,如何定义 DataTable

    是否可以将类型为 table 的参数以及类型为 int IDENTITY 1 1 的列传递给过程 并使用作为输入参数传递的 DataTable 对象来执行此存储过程 我收到以下错误 插入表变量不允许的标识列 表值参数 xxxxx 的数据不符
  • 我们如何解释表达式 (++x)+(++x)+(++x) 的结果? [复制]

    这个问题在这里已经有答案了 x 1 std cout lt lt x x x 我期望输出是11 但实际上是12 Why 我们通过期待来解释它未定义的行为而不是任何特定的结果 由于表达式尝试多次修改 x 而无需干预序列点 its 行为未定义
  • 生成16位灰度BitmapData并保存到文件

    我试图在 C 中从随机数据生成 16 位灰度位图 但它在 Marshal Copy 上崩溃了 这是我的代码 Bitmap b16bpp private void GenerateDummy16bitImage b16bpp new Bitm
  • 从响应中提取图像数据:Angular 2

    响应具有图像数据 但我无法从响应中提取它 客户代码 download this http get http localhost 9000 download this fileid subscribe data gt this image d
  • Wpf 图像控制阻止文件

    我有一个简单的Window带按钮和第二个Window当我点击时打开Button 第二Window has a Image控件 显示 png 文件 所以如果我使用FileObject财产为Binding一切正常 我可以从中删除文件File E
  • Safari 开发工具 JS 控制台窗口中的 $1 和 $2 等是什么?

    当我在 Safari 上运行开发工具并在控制台窗口中使用 querySelector 时 我得到正确的值 然后是 1 和 2 等等 任何人都可以帮助理解它们的含义吗 Chrome 0 4 开发工具会记住您在选项卡 或 配置文件 面板 中选择
  • Ruby 中的 Google Apps API 和服务帐户出现问题

    我在获取用于实例化驱动器服务帐户的示例代码时遇到一些问题 我已按照指示在 API 控制台中设置了服务帐户 并包含了 https www googleapis com auth drive 但运行此命令会生成以下错误 授权失败 服务器消息 S
  • 我如何知道 ListBoxItem 是否是 Wpf 的 ListBox 中的最后一个项目?

    我怎么知道是否ListBoxItem是集合的最后一项 在ItemContainerStyle或在ItemContainer的模板 在 Wpf 内ListBox 这个问题是因为我需要知道某个项目是否是最后一个以其他方式显示的项目 例如 假设我
  • 抽象类的非静态方法和静态方法有什么区别?

    我知道在抽象类中使用静态方法不是最佳实践 但是如果我在抽象类中同时使用静态方法和非静态方法有什么区别 我假设调用这些方法没有区别 因为我们无法为抽象类创建实例 所以我们可以仅使用类名调用静态和非静态方法 除了关键字 Static 之外 它们
  • 在Pygame中沿光标方向绘制无限长度的线

    我正在寻找有关 pygame 的帮助 我正在用 Python 开发简单的游戏来学习 Pygame 我想制作一个可以旋转并且可以用激光线射击的宇宙飞船 我已经完成了方向键控制 我们也可以用鼠标位置旋转飞船 但是我在射击方面遇到了问题 我想从宇
  • data.table 时间子集与 xts 时间子集

    您好 我希望按时间对一些详细数据进行子集化 我通常使用xts做类似的事情 subset string lt T10 00 T13 00 xts min obj subset string 获取每天上午 10 点到下午 1 点 含 之间的所有
  • 如何在 R 中完成一个变量在其因子水平上的相关性(按日期匹配)

    我试图根据因子水平确定变量的不同子集 浓度 如下 之间的相关性 在本例中 Lake A B C 换句话说 测试 A 处浓度测量值之间的相关性对照 B 处的浓度测量 然后 B 对照 C A 对照 C 问题是基于因子的子集具有不同的长度 但我只
  • PHP headers_list() 未显示所有标头

    根据文档 http php net manual en function headers list php 以及这条评论 http php net manual en function headers list php 110330 php