【问题标题】:PHP: Get HTTP Protocol Version (HTTP/1.1 vs HTTP/2)PHP:获取 HTTP 协议版本(HTTP/1.1 与 HTTP/2)
【发布时间】:2016-04-15 13:51:49
【问题描述】:

到目前为止,我的 php 应用程序都假定 HTTP 1.1 无处不在。所以我像这样定义了所有标题:

header("HTTP/1.1 500 Internal Server Error"); 

但现在我的服务器也支持 HTTP 2,我想用正确的 HTTP 状态代码更新所有标头响应。

如何获取 http 请求的 HTTP 协议版本?

(我的网络服务器是 nginx,但我想我使用的是 nginx 还是 apache 无关紧要。)

【问题讨论】:

    标签: php http http2 http-1.1


    【解决方案1】:

    服务器协议应该可以通过服务器环境中的SERVER_PROTOCOL 获得,通常通过应用程序内部的$_SERVER['SERVER_PROTOCOL'] 公开。

    来自 Apache 2.4 下的phpinfo()

    SERVER_PROTOCOL => HTTP/1.1
    

    【讨论】:

      【解决方案2】:

      更改/etc/nginx/factcgi_params:

      #fastcgi_param  SERVER_PROTOCOL    $server_protocol;
      fastcgi_param  SERVER_PROTOCOL    HTTP/2.0;
      

      标题应该是:-

      header($_SERVER['SERVER_PROTOCOL'].'404 Not Found');
      

      【讨论】:

      • 仅供参考,在“404”之前缺少一个空格。
      猜你喜欢
      • 2017-09-25
      • 2017-07-16
      • 1970-01-01
      • 2011-05-29
      • 2016-09-10
      • 1970-01-01
      • 2019-07-23
      • 2013-01-20
      • 2015-02-13
      相关资源
      最近更新 更多