【问题标题】:Github webhook PHP script returns "Missing HTTP 'Content-Type' header."Github webhook PHP 脚本返回“缺少 HTTP 'Content-Type' 标头。”
【发布时间】:2016-08-24 09:41:14
【问题描述】:

提前一些信息:

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

现在,我找到了一个 PHP 脚本 (这正是我使用它的方式,除了秘密) on GitHub 正在解析 webhook 返回一个错误,指出 Content-Type缺少标头,而当我查看 webhook 交付时,它显然有标头。

错误出现在 PHP 脚本的第 33 行,该脚本通过检查来检查 HTTP_CONTENT_TYPE 是否存在

if (!isset($_SERVER['HTTP_CONTENT_TYPE'])) {
    throw new \Exception("Missing HTTP 'Content-Type' header.");
} 

问一个实际的问题:如果标头明显存在,PHP 如何抛出异常?

【问题讨论】:

    标签: php git github webhooks


    【解决方案1】:

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

    通常CONTENT_TYPE 属性应在RFC 3875 之后使用

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

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

      回显 $_SERVER['CONTENT_TYPE'].PHP_EOL;

    2. 使用 cUrl 打开文件

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

    对我来说是

    应用程序/json

    1. 我的测试用例中没有设置HTTP_CONTENT_TYPE 属性。

    【讨论】:

    • 这确实解决了问题,HTTP_CONTENT_TYPE属性确实没有设置,现在确实通过了,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多