如何在 PHP 中手动解析 HTTP(S) 连接中的主机

2024-01-12

Curl 具有手动指定将主机解析到哪个 IP 的功能。例如:

curl https://www.google.com --resolve "www.google.com:443:173.194.72.112"

这在使用 HTTPS 时特别有用。如果只是一个 HTTP 请求,我可以通过直接指定 IP 地址并添加主机标头来实现相同的效果。但在 HTTPS 中,这会中断连接,因为 SSL 证书主机将与 IP 地址进行比较,而不是与主机标头进行比较。

我的问题是,如何在 PHP 中做同样的事情?


尽管 @deceze 的答案是正确的,但一个活生生的例子可能会有用。我需要CURLOPT_RESOLVE因为我试图使用附加的 IP 地址直接连接Host: www.example.comheader,但由于服务器使用 SNI,所以这不起作用。

I used CURLOPT_RESOLVE解决我的问题。此代码允许我通过我选择的 IP 地址连接到 SNI 服务器:

$resolve = array(sprintf(
    "%s:%d:%s", 
    $hostname,
    $port,
    $host_ip
));

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RESOLVE, $resolve);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
curl_close($ch);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 中手动解析 HTTP(S) 连接中的主机 的相关文章

  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 优雅地处理没有数据的 amcharts

    我想知道我的 dataProvider 是否为空 amCharts绘制时默认为null 我怎样才能动态地处理它 var chart AmCharts makeChart chartdiv theme none type serial dat
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • Maven:无法传输文件 XXX 返回代码为: 501 ,ReasonPhrase:HTTPS 必需

    我在构建 Maven 项目时收到意外的 501 错误代码 该消息显示需要 HTTPS 但我没有更改我的 settings xml 如何检查我的配置是否发生更改 我怎样才能让事情正常运转 其原因解释于Maven 依赖项失败并出现 501 错误
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 为什么 iOS11 中 UIScreen.bounds 不正确

    请不要标记为重复 可用线程尚未提供答案 行为仅限 iOS11 将项目从 Xcode 8 更新到 Xcode 9 现在使用 iOS11 但仍然使用 Swift 3 我有以下经验 print UIScreen main bounds width
  • 在 PHP 5.4 中工作的 PHP 5.3 中出现错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是在 P
  • 如何处理绑定到自定义程序集对象数据源的 RDLC 报告中的空嵌套对象?

    我有一个 RDLC 报告 我将其直接以 PDF 形式呈现到响应流 而不是使用 ReportViewer 在呈现报表的代码中 它的 DataSource 绑定到自定义程序集中定义的 List Of ClassA 对象 这似乎在大多数情况下都有
  • 如何使用注释自动装配 RestTemplate

    当我尝试自动装配 Spring 时RestTemplate 我收到以下错误 nested exception is org springframework beans factory NoSuchBeanDefinitionExceptio
  • Facebook C# SDK ASP.Net 3.5 示例

    我被要求开发一个 Facebook 应用程序 允许当前系统的用户使用这个 Facebook 应用程序找到彼此 不幸的是 他们的要求是它必须在 ASP NET 3 5 中构建 更容易为客户分发 我是一名经验丰富的 PHP 开发人员 尽管我过去
  • Android SpeechRecognizer 音频录制错误

    我正在尝试在 Android 上使用 SpeechRecognizer 而不使用 Intent Dialog 它在大多数设备上工作正常 但某些设备返回音频录制错误 错误代码 3 并且没有此错误的详细信息 有什么解决办法或者原因吗 谢谢你 当
  • 伊伊。如何添加CSS“错误”类到表单提交的输入?

    我有 Yii 形式 有些字段是必需的 提交表单时 我需要将 CSS 类 错误 添加到文本输入中 我的代码
  • Firefox 不遵守 rel=stylesheet 链接的“disabled”属性

    我有一个网站需要加载两个主题 用户可以打开 关闭第二个主题 我目前正在通过使用来完成此任务disabled链接中的标签如下 然后我切换disabled在 JavaScript 中 这在 Safari Mac Chrome Mac Windo
  • 为什么 gprof 大大低估了程序的运行时间?

    我有这个程序需要 2 34 秒才能运行 而 gprof 说它只需要 1 18 秒 我在其他地方读过答案 表明如果程序受 I O 限制 gprof 可能会出错 但这个程序显然不是 对于我正在尝试分析的有用程序 也会发生这种情况 它并不特定于这
  • MySQL validate_password_policy 未知系统变量

    我正在使用 MySQL 5 7 25 我想通过在 MySQL 命令中执行以下操作来增加我的 MySQL 密码策略 SET GLOBAL validate password policy 2 但我总是收到错误 错误 1193 HY000 未知
  • Valums Ajax Uploader (Mutli) - 检测所有文件何时上传

    我正在使用 Valums Ajax Uploader 上传一批文件 我们最近将代码从单一上传类型更改为多重上传类型 这给我们的代码带来了问题 正如你所看到的 当onComplete事件触发后 我们重新加载页面以显示新上传的图像 但是 那on
  • Java正则表达式匹配方括号[重复]

    这个问题在这里已经有答案了 我正在尝试使用正则表达式 java ReplaceAll 执行以下操作 Input Test Test1 Test2 Test3 Output TestTest3 简而言之 我需要删除方括号内的所有内容 包括方括
  • 如何在 SQLAlchemy 中使用数学方程作为过滤器

    我正在使用 SQLAlchemy ORM 在应用程序中构建 MySQL 查询 并且完全能够向查询添加基本过滤器 如下所示 query meta Session query User filter User user id 1 这给了我基本上
  • 如何使用 Jersey 2.x 设置连接和读取超时?

    在球衣 1 中我们有一个函数设置连接超时 https jersey java net apidocs 1 1 5 jersey com sun jersey api client Client html setConnectTimeout
  • 切换选项卡时倒计时器停止

    因此 基本上 当我切换选项卡时 特定页面上的倒计时器会停止倒计时 并在您返回选项卡时恢复 无论如何 有没有办法减轻这种情况 以便它在后台计数或计入您在另一个选项卡上花费的时间 这基本上就是我对 js 的看法 document getElem
  • gganimate 中框架标题的自定义列

    我想在 gganimate 标题中使用自定义列 但无法在文档中的任何位置阅读如何操作 使用其页面中的代码的示例 library gapminder ggplot gapminder aes gdpPercap lifeExp size po
  • 如何在 Inno Setup 中制作停止和暂停/恢复/播放音乐按钮

    我想在所有页面的左下角创建两个彼此相邻的按钮 例如重新加载 第一个按钮显示Pause和Resume命令 如果我单击Pause 按钮将切换到Resume自动地 另一个按钮显示Stop命令 如果我单击Stop 下一个按钮将切换到从头开始播放自动
  • 使用 boto3 中的 IAM ARN 连接到 s3 存储桶

    我正在尝试使用 IAM 角色连接到 s3 存储桶 我的存储桶名称是 test bucket 我创建了一个名为 的角色 我的角色 s3并赋予其完整的 s3 访问权限 即 AmazonS3FullAccess 当我尝试使用代码访问存储桶的名称时
  • 使用 HTTPS 进行应用程序无线安装不起作用

    我知道一般情况下通过 HTTPS 安装是有效的 但不知何故它在我的环境中不起作用 据我了解 itms service 链接是 HTTP itms services action download manifest url http SERV
  • 如何在 PHP 中手动解析 HTTP(S) 连接中的主机

    Curl 具有手动指定将主机解析到哪个 IP 的功能 例如 curl https www google com resolve www google com 443 173 194 72 112 这在使用 HTTPS 时特别有用 如果只是一