问题标签 [laminas-http]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
111 浏览

guzzle - 代理的“多部分”请求导致正文为空

我们的团队最近迁移到了 Laminas,在这样做的过程中,我们的应用程序处理文件上传的方式现在遇到了问题。我们有 2 个应用程序(都是 MVC):一个视图应用程序和一个 API 应用程序。我们的视图应用程序处理来自浏览器的所有请求,并通过我们的 ApiProxyController 代理 API 请求。这适用于我们的每一个请求,除了我们的文件上传。对于这些请求 ( multipart/form-data;),我们已经看到,当请求到达我们的 API 应用程序时,请求的主体是空的。

我们在使用最新版本的 Guzzle HTTP 客户端和 Laminas 客户端时都遇到了这个问题。这是我们用来代理来自视图应用程序的请求的代码片段:

0 投票
0 回答
236 浏览

php - 使用 laminas-http 代理适配器发出的 HTTP 请求失败

设置

Omeka S (v3.0.1)的一个实例在 Red Hat OpenShift 容器中运行,并配置为使用 laminas-http 代理适配器通过代理服务器发出 http 请求。

问题

尝试使用 oembed 媒体创建项目并使用 CSVImport 模块时出现问题。

代理适配器在尝试建立 SSL 连接时抛出异常,报告应用程序无法连接到目标服务器。PHP 警告提供了更多细节,指出代理身份验证是问题所在。

容器中通过相同代理发出 http 请求的其他程序按预期工作。示例包括 yum、curl 和用于从 Omeka S 发送电子邮件的 smtp 程序。

根据我在下面的尝试,问题似乎特定于层、代理和/或目标服务器之间的交互。

尝试了什么

禁用 SSL 对等验证。

结果是可以在多次尝试后导入项目,但现在请求可能由于两个新原因而失败:连接可能会失败,但出现与上述相同的异常,但 php 报告这是由于握手超时,以及代理或目标服务器可能返回格式错误/空的响应。

切换到 laminas-http curl 适配器。

首先测试curl命令行工具和一个使用php curl库的测试php程序,确认可以成功使用代理。没有一个测试请求失败。但是响应时间变化很大。有些请求需要 40 多秒才能完成。

切换到 curl 适配器允许 Omeka S 成功下载 oembed 资源。我在使用该应用程序时看到了相同的请求时间变化,它多次报告 504 网关超时错误。当我导航回管理面板时,返回 504 错误响应的项目​​仍然显示为成功创建。

我不确定 504 是来自容器的 apache 实例、代理还是目标网站。

通过代理路由非容器化实例。

待定。如果可以复制错误,则问题出在层和代理之间。如果不能,那么问题是在容器的上下文中使用了层板。

0 投票
0 回答
37 浏览

php - 初始化后向请求对象添加附加数据

下面的公共函数根据用户名和密码返回 oauth 令牌。但是,我有一个要求,用户名必须首先从电子邮件 ID 中查询。在函数的第一部分,我需要以某种方式将用户名添加到请求对象中。根据我的理解,该请求是使用层创建的。

获取函数的完整代码在这里

请求作为表单数据发送: 请参见下面的示例 js 代码:(接受用户名,添加电子邮件参数以演示所需内容)

0 投票
0 回答
48 浏览

php - 未创建项目中的路由,我收到一条消息“无法创建名称为 Domain\v1\SmartLocker\Action\DeliverPackage 的服务。原因:”

我在使用 Zend Expressive 的项目中创建了一个通过 POST 方法调用的新路由,然后我使用 Insomnia 对其进行了测试,但服务器给我的答案如下:

“无法创建名为 Domain\v1\SmartLocker\Action\DeliverPackage 的服务。原因:”

这是我的文件夹的结构,其中我的 Action 和我的 Service 是:

在此处输入图像描述

这是位于我的 ConfigProvider.php 中的 getRoutes() 方法:

在此处输入图像描述

这是错误:

在此处输入图像描述

我尝试过但没有成功的事情:

  1. 删除数据/config-cache.php
  2. 更改 data/config-cache.php 权限
  3. 更改路由名称和文件(我不知道这是否有意义)

有没有人经历过这样的事情,你能帮忙吗?