Github 网络钩子 PHP 脚本 returns "Missing HTTP 'Content-Type' header."

Github webhook PHP script returns "Missing HTTP 'Content-Type' header."

一些事前信息:

我有 1 个服务器和 2 个域,一个是实时版本 (live),另一个用于测试目的 (redesign)。 我正在使用 GitHub webhooks 使用存储库自动更新我重新设计的服务器,这样当有多个人在处理存储库时,我们不必每次都手动部署它。

现在,我找到了一个 PHP 脚本 (这正是我使用它的秘密) on GitHub 其中 webhook 是正在解析 returns 一个错误,指出缺少 Content-Type header,而当我查看 webhook 交付时,它显然有 header.

错误出现在 PHP 脚本的第 33 行,该脚本通过检查

来检查 HTTP_CONTENT_TYPE 是否存在
if (!isset($_SERVER['HTTP_CONTENT_TYPE'])) {
    throw new \Exception("Missing HTTP 'Content-Type' header.");
} 

问一个实际问题:明明有header,PHP if 怎么会抛出异常?

我认为名字 HTTP_CONTENT_TYPE 是错误的。看起来它已被用作错误 Sets HTTP_CONTENT_TYPE but not CONTENT_TYPE.

的修复程序

通常CONTENT_TYPE 属性应该在RFC 3875

之后使用

我做了一个简单的测试来检查它是如何工作的

  1. 在我的网络服务器上创建了一个 index.php 文件

    echo $_SERVER['CONTENT_TYPE'].PHP_EOL;

  2. 使用 cUrl 打开文件

    $ curl -H "Content-Type: application/json" http://localhost

我的输出是

application/json

  1. HTTP_CONTENT_TYPE 属性 未在我的测试用例中设置。