PHP:获取 HTTP 协议版本(HTTP/1.1 与 HTTP/2)
Posted
技术标签:
【中文标题】PHP:获取 HTTP 协议版本(HTTP/1.1 与 HTTP/2)【英文标题】:PHP: Get HTTP Protocol Version (HTTP/1.1 vs 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 无关紧要。)
【问题讨论】:
【参考方案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”之前缺少一个空格。以上是关于PHP:获取 HTTP 协议版本(HTTP/1.1 与 HTTP/2)的主要内容,如果未能解决你的问题,请参考以下文章
详解HTTP协议版本(HTTP/1.01.12.03.0区别)
详解HTTP协议版本(HTTP/1.01.12.03.0区别)