验证本地或远程网址是否HTTP/2站点

  • 概论
    • 以下是一个验证的类以及静态方法
    • 最终返回的结果如下

概论

现在越来越多的站点开始支持HTTP/2协议,那我们如何验证请求的网址是Http2.0协议的接口呢?又如何验证本地PHP环境(curl类库)是否支持Http2.0协议呢?

以下是一个验证的类以及静态方法

<?php$a = CURL_VERSION_HTTP2;
echo 'CURL_VERSION_HTTP2:';
var_dump($a);
echo '<hr/>';
$b = CURL_HTTP_VERSION_2_0;
echo  'CURL_HTTP_VERSION_2_0:';
var_dump($b);
echo '<hr/>';class Http2Helper
{/*** 测试本地或远程是否支持http2* @param  string  $url 要测试的地址* @return array ['code'=>'', 'msg'=>''] code==1 表示外部url支持http2*/public static function isSupportHttp2($url) {$result = ['code' => 1, 'msg' => ''];$curlVersion = curl_version();// var_dump($curlVersion);if ($curlVersion['features'] && CURL_VERSION_HTTP2 !== 0) {$ch = curl_init();curl_setopt_array($ch, [CURLOPT_URL => $url,CURLOPT_HEADER => true,CURLOPT_NOBODY => true,CURLOPT_RETURNTRANSFER => true,CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2_0,]);$response = curl_exec($ch);//查看返回内容// var_dump($response);if ($response !== false && strpos($response, 'HTTP/2') === 0) {$result['msg'] =  "HTTP/2 support!"; } elseif ($response !== false) {$result['msg'] = "服务器上没有HTTP/2支持。";$result['code'] = -1;} else {$result['msg'] = curl_error($ch);$result['code'] = -2;}curl_close($ch);} else {$result['msg'] = "客户端上没有HTTP/2支持。";$result['code'] = -3;}return $result;}
}$begin = microtime(true);
// $url = 'https://www.zhihu.com';
$url = 'https://www.alipay.com/';
// $url = 'https://www.baidu.com/';
$retArr = Http2Helper::isSupportHttp2($url);
$end = microtime(true);
echo "function isSupportHttp2() spent time:".(($end-$begin)*1000).'ms <br/>';
var_dump($retArr);

最终返回的结果如下

从结果我们可以看到支付宝网站是一个http2.0站点,本地环境也是支持Http2.0协议的。

验证本地或远程网址是否HTTP/2站点相关推荐

  1. bash git 如何切换目录_【git】命令行与本地仓库/远程仓库

    终端里如何复制粘贴 在cmder里 粘贴是鼠标右键 粘贴时shift+Insert 复制是用鼠标选中即自动复制 在Git Bash里 粘贴是鼠标中键 粘贴时shift+Insert 复制是用鼠标选中, ...

  2. 实现 外网 远程桌面 连接 个人pc(开机自启动,校园网web自动验证,多用户远程桌面)

    背景:直接原因,游戏本好重,想有轻度需求时,不带电脑出门.但又因向日葵.teamviewer之类的控制软件网速限制且操作兼容性一般,所以想用nw(防敏感)穿透+windows远程桌面的形式,实现肥宅的 ...

  3. 本地电脑远程至工控现场一台普通PC上(没安装博途软件),实现读写与监控PLC程序

    一.前言 (1)对于电气工程师来说,在现场PC上没有安装博图软件时,或者博图版本不匹配时:如何能快速的使用笔记本远程现场PC实现监控修改并下载PLC程序是重要问题 (2)常见的是有几种做法:一是提前购 ...

  4. git命令推送本地到远程分支

        目录 git命令推送本地到远程分支 1.从命令行创建一个新的仓库 2.从命令行推送已经创建的仓库 3.删除远程 Git 仓库 fetch -p 修剪远程分支 Git复制已有分支到新分支开发 g ...

  5. windows系统无法远程桌面提示CredSSP 身份验证协议和远程桌面客户端

    引言 微软在2018 年 3 月 13 日初始版本更新了所有受影响平台的 CredSSP 身份验证协议和远程桌面客户端.2018年5月8日将默认设置从"易受攻击"更改为" ...

  6. SpringBoot + Vue打包部署到本地和远程服务器

    最近碰到有人问如何将SpringBoot和Vue进行打包部署到Tomcat服务器,由于Vue接触不是很久所以我自己也感兴趣是如何打包部署到本地或者远程服务器上(云端).恰好手上也有一个案例需要部署到远 ...

  7. git 入门教程之本地和远程仓库的本质

    本地仓库和远程仓库在本质上没有太大区别,只不过一个是本地电脑,一个是远程电脑. 远程仓库不一定非得是 github 那种专门的"中央服务器",甚至局域网的另外一台电脑也可以充当&q ...

  8. C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统摘要信息查看功能...

    最近做一个项目碰到要实现查看本地和远程计算机的摘要信息,采用命令行msinfo32可以很快查看到,如下图: 需要在用C#来实现类似信息查看.尤其远程计算机的..因此通过MSDN查询到.win32的AP ...

  9. windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法

    windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 参考文章: (1)windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 (2)https://www. ...

  10. 本地Windows远程桌面连接阿里云Ubuntu服务器

    本地Windows远程桌面连接阿里云Ubuntu 16.04服务器: 1.目的:希望通过本地的Windows远程桌面连接到阿里云的Ubuntu服务器,通过远程桌面图形界面的方式操作服务器. 2.条件: ...

最新文章

  1. R语言构建xgboost模型、预测推理:输出预测概率、预测标签
  2. 离奇的梦境,能够防范大脑过拟合
  3. VBS基础篇 - 运算符(1) - 运算符优先级
  4. usb过滤驱动inf_N卡驱动全家桶专治工具升级:专为玩家打造
  5. VB Mid函数作用
  6. “生于忧患,死于安乐”之程序员人生
  7. 厉害了,教你用 Spring Boot 控制并发登录人数
  8. 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
  9. Android studio2.3.3升级3.1.2坑
  10. 南京打造大数据创新孵化平台
  11. [vue] vue如何监听键盘事件?
  12. python换循环颜色_python – 增加matplotlib颜色循环
  13. mysql myisam简单分表设计
  14. 将字符串转换为全角或半角
  15. CPU缓存侧信道攻击综述-Survey of CPU Cache-Based Side-Channel Attacks
  16. linux 山东大学 试卷_2020超星尔雅战略管理(山东大学)作业题库
  17. Py之PySide:PySide的简介、安装、使用方法之详细攻略
  18. LaTeX编写IEEE会议论文字体报错、且参考文献中会议/期刊的名字没有斜体的问题解决
  19. css 3D 旋转 - Demo
  20. SpringBoot框架的基本结构

热门文章

  1. php开发的在线客服系统,全开源无加密,支持微信客服对接
  2. centos 6 python django mysql_CentOS 6.5中部署django+uwsgi+nginx+mysql项目
  3. 2020上半年十大典型勒索软件大盘点
  4. 签证官的心思你不懂,所以才会被拒签
  5. 如何修复老照片,Bringing-Old-Photos-Back-to-Life机器学习开源项目安装使用 | 机器学习
  6. 狐狸找兔子(java 版)
  7. Python简介,第2章–字符串和列表
  8. 链家混三个月底薪_应届毕业生入职链家,到离职
  9. 数据库应用——MySQL+ATLAS+MMM高可用集群
  10. ios第3天的气泡作业