Guzzle 和 HTTPS

2023-11-26

我想使用 Guzzle 和 Silex 向 https 页面发送请求。

通过 http url 我有一个响应:

app->get('/',function() use ($app, $client){

    $response = $client->get("http://www.google.fr");

    var_dump($response);

});    

我的回复:

object(GuzzleHttp\Message\Response)[102]
  private 'reasonPhrase' => string 'OK' (length=2)
  private 'statusCode' => int 200
  private 'effectiveUrl' => string 'http://www.google.fr' (length=20)
  private 'headers' (GuzzleHttp\Message\AbstractMessage) => 
    array (size=13)
      'date' => 
        array (size=1)
          0 => string 'Wed, 18 Feb 2015 10:57:37 GMT' (length=29)
      'expires' => 

但使用 https :

$app->get('/',function() use ($app, $client){
$url = "https://api.zoapp.com/v1/stc/cans/directory/pub/Employees";

$response = $client->get("https://www.facebook.com/");

var_dump($response);

});

我必须犯错误:

RequestException in RequestException.php line 51:

and

RingException in CurlFactory.php line 126:

细节 :粘贴链接


在您的详细信息链接之后,异常消息显示:

cURL 错误 60:参见http://curl.haxx.se/libcurl/c/libcurl-errors.html

抬头看http://curl.haxx.se/libcurl/c/libcurl-errors.html I found

CURLE_SSL_CACERT (60)

对等证书无法使用已知的 CA 证书进行身份验证。

因此,这很可能是 SSL 验证/CA 捆绑包的问题。通过设置verify请求选项false,guzzle(或curl)不会尝试根据证书验证主机,因此错误消失(--回复https://stackoverflow.com/a/28582692/413531)

但是,您不想这样做;) 相反,您应该尝试通过提供有效的 CA 捆绑包来解决该问题。

IIRC,在 v4 guzzle 中提供了默认证书(请参阅https://github.com/guzzle/guzzle/blob/4.2.3/src/cacert.pem),但在版本 5 中删除了它,现在尝试发现您的默认系统 CA 捆绑包。从the docs,检查这些位置:

Check if openssl.cafile is set in your php.ini file.
Check if curl.cainfo is set in your php.ini file.
Check if /etc/pki/tls/certs/ca-bundle.crt exists (Red Hat, CentOS, Fedora; provided by the ca-certificates package)
Check if /etc/ssl/certs/ca-certificates.crt exists (Ubuntu, Debian; provided by the ca-certificates package)
Check if /usr/local/share/certs/ca-root-nss.crt exists (FreeBSD; provided by the ca_root_nss package)
Check if /usr/local/etc/openssl/cert.pem (OS X; provided by homebrew)
Check if C:\windows\system32\curl-ca-bundle.crt exists (Windows)
Check if C:\windows\curl-ca-bundle.crt exists (Windows)

但是,我发现在创建新的证书时显式设置证书更容易Client。这意味着:

  • 下载https://github.com/guzzle/guzzle/blob/4.2.3/src/cacert.pem或更好(因为较新)http://curl.haxx.se/ca/cacert.pem (see http://curl.haxx.se/docs/caextract.html)
  • 使用此证书的本地路径Client实例化

示例(假设您有名为cacert.pem位于与脚本相同的目录中):

$default = ["verify" => __DIR__ . "/cacert.pem"];
$config = ["defaults" => $default];
$client = new Client($config);
$response = $client->get("https://www.facebook.com");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Guzzle 和 HTTPS 的相关文章

  • IIS 8 HTTPS/需要 SSL 导致超时错误

    尝试通过 IIS 8 通过 SSL 发布网站 但出现超时错误 任何帮助表示赞赏 采取的步骤 已验证该网站可以通过 HTTP 访问 http xxx xxx xxx xxx有效 此时使用 IP 地址 如果重要的话 IIS gt 服务器证书 g
  • 反向代理告诉后端 SSL 已使用的事实上的标准是什么?

    我有一个反向代理 它在外部执行 HTTPS 但在内部执行 HTTP 这意味着默认情况下应用内 URL 将以 HTTP 作为方案 因为这是联系它的方式 代理如何告诉后端应该使用 HTTPS 代理可以向其接收并传递到后端的请求添加额外 或覆盖
  • 从 HTTPS 重定向到 HTTP 的安全问题?

    我在一些博客上读过 抱歉没有提及参考资料 但我找不到了 如果您将用户从 https 页面重定向到 http 页面 您将失去保护网站安全的所有工作 那么 有人可以向我解释一下在以下情况下我是对还是错 在登录页面上使用 https 然后使用 h
  • 使用 RedirectToAction 时如何设置协议?

    我的目标操作需要 https 我已经有一个过滤器 如果请求通过 http 传入 它会重定向到 https 但我更愿意从一开始就通过 https 发送请求 EDIT Darin 给出了一个答案 现在更新为其他内容 他问为什么我无论如何都通过
  • 使用 IIS 7.5 的特定页面的 HTTPS URL 重写规则

    我正在尝试在 IIS 7 5 中进行 URL 重写 以重定向到 HTTPS 以获得 单页 域的其余部分应保留 HTTP 为此 我正在编辑 Web config 文件 有人可以告诉我我在做什么吗 以下规则错误
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • Java8,HttpClient,接收“收到致命警报:handshake_failure”

    我们正在尝试访问以下 URL 仅作为示例 https broadly vice com en us article eating out as a feminist https broadly vice com en us article
  • 如何使用 php 通过 https 下载文件

    我需要使用 PHP 下载 xml 文件 我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容 curl setopt http CURLOPT SSL VERIFYPEER false curl setopt http CUR
  • 当SESSION_COOKIE_SECURE = True时如何在HTTP中获取一些用户身份信息

    以下是我正在开发的网站的简短描述 公共页面可以通过 HTTP 或 HTTPS 访问 其他一些页面 认证页面 账户详情页面等 需要通过HTTPS访问 Apache2 负责进行相关的 HTTP 到 HTTPS 链接重定向 我使用标准 Djang
  • 如何处理致命错误:cURL错误7:无法连接到xxxx端口443

    我有一个连接到第三方 API 的脚本 它是并且应该在 24 7 不间断循环上运行 我在重新启动循环之前在最后使用睡眠 问题是 有时第三方 API 会被拒绝 或者连接会因以下错误而中断 致命错误 未捕获的异常 GuzzleHttp Ring
  • 使用带有 HTTPS 证书的 System.Net.WebClient

    在我的 C Windows 客户端中 我向 母舰 进行了 POST 提交 当然 我希望提交的数据受到保护 因此我付费让 HostGator 向我颁发 SSL 证书 我保存了 CER 文件 并且正在构建请求 如下所示 wrapper for
  • PHPUnit 和来自 Guzzle 的模拟请求

    我有一堂具有以下功能的课程 public function get string uri stdClass this gt client new Client response this gt client gt request GET u
  • PHP - 为什么使用 Guzzle 而不是 cURL?

    在我的应用程序中 我最初开始使用 cURL 从各种 API 检索数据 今天 我尝试使用 Guzzle 来完成同样的任务 到目前为止 cURL 和 Guzzle 似乎都工作得同样好 判断依据Github https github com gu
  • 使用 Erlang 进行 https post 的简单示例

    我发现引用了一些使用 erlang 与 ssl 通过 rpc 和 http get 等的示例 但是我很难找到通过 erlang 将数据发布到 ssl 端点的示例 有人知道我缺少的一个简单例子吗 我想我明白了 我的论点是错误的 这就是我最终得
  • 如何阻止 Firefox 在本地开发服务器上强制使用 https://?

    我正在使用 AMPPS 在 Macintosh 上运行开发环境 我有一个包含项目文件的文件夹 我已将其添加到我的hosts file 127 0 0 1 www example com 我已经相应地设置了虚拟域 当我尝试使用 Firefox
  • 通过 https 负载均衡器的 WCF http 服务

    我有一个可以通过 http 端点访问的 WCF Web 服务 现在 该服务应通过 https 与负载均衡器一起发布 客户端是通过 svcutil exe 在 Net 中创建的 但 Java 客户端也需要 WSDL 我的理解是 Web 服务在
  • HttpHostConnectException:连接被拒绝 Android

    我正在尝试通过 HttpPost 连接并将用户名和密码发送到网站 然后从该网站接收字符串 我过去尝试过各种对我有用的方法 但现在当我发送用户名和密码标识符时 应用程序超时长达 4 分钟 然后抛出以下异常 07 16 16 32 32 897
  • 如何在Delphi中下载一个非常简单的HTTPS页面?

    我尝试了在这里看到的代码 但它不适用于 HTTPS 我需要将此页面作为字符串下载 并在其上添加一些换行符 以便将信息按顺序放入 TMemo 中 怎么做 我尝试使用 Indy 但由于 SSL 问题而失败 我尝试了此页面的解决方案 如何将网页下
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 使用 HTTPS 时我需要/想要 gzip 压缩吗?

    使用 HTTPS 是否已经包含 透明 内容压缩 或者我是否仍然应该担心与浏览器协商是否压缩我的 Servlet 输出 如果 HTTPS 已经有压缩 是无条件的还是需要配置 协商 启用 默认情况下 TLS 不启用压缩 但它 压缩 是在 TLS

随机推荐

  • 如何列出接口类型中的方法名称?

    例如 type FooService interface Foo1 x int int Foo2 x string string 我想做的是获取列表 Foo1 Foo2 使用运行时反射 尝试这个 t reflect TypeOf FooSe
  • Flutter 切换到 Tab 重新加载 Widget 并运行 FutureBuilder

    问题 我有 2 个使用默认选项卡控制器的选项卡 如下所示 Widget build BuildContext context return DefaultTabController length 2 child Scaffold drawe
  • 根据一列的值更新另一列的值

    我有一个名为 Vendor 的表 在该表中我有一个名为 AccountTerms 的列 它仅显示一个值 即 0 1 2 3 等 我还有一个我想使用的专栏 ulARAgeing 以反映该值的含义 例如 0 Current 1 30 Days
  • 错误:使用 SQLDF 没有此类列

    下面是脚本 gt library sqldf gt turnover read csv turnover csv gt names turnover 1 Report Date PersID Status DOB 5 Age Tenure
  • 如何用seaborn拟合泊松分布?

    我尝试将数据拟合为泊松分布 import seaborn as sns import scipy stats as stats sns distplot x kde False fit stats poisson 但我收到这个错误 Attr
  • 如何更新应用程序?

    互联网上似乎没有太多用于更新 Android 应用程序的资源 那么 我需要做的就是更改应用程序的 build gradle 文件中的版本号和名称吗 versionCode 2 versionName 1 0 1 这就是全部 现在我只需要制作
  • 即使一项检查失败如何继续执行

    我正在尝试访问不同的网址并使用 matchImageSnapshot 将屏幕截图与基线图像进行比较 这里的问题是当我的一个 url 因 matchimagesnapshot 失败时 它不会继续到下一个 URL 注意 我尝试使用变量 env
  • 获取插入后生成的id

    我正在 Android 上使用 SQLite 我想知道获取我插入的行的生成 id 的最佳方法 我认为解决方案在包含后进行搜索 但它看起来不是最好的方法 The insert方法返回id刚刚插入的行或 1如果插入过程中出现错误 long id
  • 滚动到带有标题的 Xamarin Forms ListView 的开头

    我在 Xamarin Forms 中滚动到 ListView 顶部时遇到一些问题 我可以通过调用 ScrollTo 并传递第一项来滚动到第一项 问题是 当列表有标题项时 我找不到滚动到标题的方法 这可能吗 我能想到的唯一解决方法是不使用标头
  • “new new Something”如何在 JavaScript 中产生有效的结果?

    我目前正在开发一个 JavaScript 解析器并研究ECMAScript 5 1 规范 这是目前令我困惑的一个问题 11 2 左侧表达式定义以下内容NewExpression生产 NewExpression MemberExpressio
  • 密码散列的盐也应该被“散列”吗?

    我认为这可能是一个愚蠢的问题 但我已经很困惑我应该在这里做什么才能最好 对密码哈希进行加盐处理时 盐是否也应该进行哈希处理还是保留为明文 注意 我正在对 SHA 256 中的密码进行哈希处理 并且 Salt 是预定义的字符串 因为一次只会存
  • 并发文件写入

    如何写入可由多个源 可能以并发方式 访问的文本文件 确保不会丢失写入操作 例如 如果两个不同的进程在同一时刻写入文件 这可能会导致问题 简单的解决方案 不是很快也不是很优雅 是在开始进程时锁定文件 创建 lock 文件或类似文件 并在写入完
  • 如何优化在 date 的 where 子句中包含 to_char 的 Oracle 查询

    我有一张表 其中包含49403459记录 我想查询某个日期范围内的表 说04 10 2010 to 04 10 2010 但是 日期以格式存储在表中10 APR 10 10 15 06 000000 AM 时间戳 结果当我这样做时 SELE
  • 在 .NET Web API POST/PUT 方法中使用继承的类

    我不知道如何在 Web API 控制器中使用继承的类 我have to create only oneAPI 控制器用于创建和更新数据库中继承的对象 与我的模型类似 所有这些模型都存在 Dto public class Animal pub
  • 在 WordPress 的自定义管理页面上提交表单

    我在 WordPress 管理中创建了一个自定义页面 其中有一个简单的文件上传字段和一个提交按钮 我需要弄清楚如何将页面提交到可以处理但在网络上找不到任何内容的地方 有谁知道表单上需要什么 操作 才能使其转到一个函数或另一个我可以处理文件的
  • 打印html元素时如何获得正确的渲染尺寸

    当将 html 元素打印到 A4 尺寸的纸张上时 我无法理解如何以正确的尺寸呈现 html 元素 为了说明我的目的 我将代码简化为一个 html 页面 其中包含一个红色边框的表格 该表格的尺寸应为 210mmx297mm A4 纸张尺寸
  • 通过 os.system() 终止进程中启动的脚本

    我有一个 python 脚本 它启动多个进程 每个进程基本上只是调用一个 shell 脚本 from multiprocessing import Process import os import logging def thread me
  • JavaScript 将 4 个字节的数组转换为 modbusTCP 读取的浮点值

    我正在尝试将 4 个字节的数组转换为浮点值 事情是这样的 我通过 ModbusTCP 从我的请求中得到答案 看起来像这样 data 16610 40202 buffer type Buffer data 64 226 157 10 该字符串
  • Hbase错误zookeeper存在3次退休后失败

    我在 Ubuntu 中使用 HBASE 0 94 8 独立模式 它工作正常 我能够在 Hbase shell 中执行所有操作 但在我登录我的系统后 它给出以下错误 15 07 28 15 10 30 ERROR zookeeper Reco
  • Guzzle 和 HTTPS

    我想使用 Guzzle 和 Silex 向 https 页面发送请求 通过 http url 我有一个响应 app gt get function use app client response client gt get http www