当前位置: 首页 > 知识库问答 >
问题:

未添加Symfony Http客户端默认头

明星剑
2023-03-14

我正在使用Http客户端向外部API发送请求。根据文档,我可以向特定路由添加默认头,如下所示:

framework:
  http_client:
    scoped_clients:
      the_api:
        base_uri: '%env(the_url)%'
        headers:
          Authorization: 'Bearer %env(my_token)%'

那对我不起作用。我也尝试过这个选项:

auth_bearer: '%env(my_token)%'

同样的效果。

在我用来提出请求的服务中,我有:

$response = $client->request('POST', $theUrl, [
    'body' => $dataArray
]);

通过上述配置,我得到一个403响应,就好像令牌没有被发送一样。如果我把它添加到请求()函数,但是它工作:

$response = $client->request('POST', $theUrl, [
    'body' => $dataArray,
    'headers' => [
        'Authorization' => 'Bearer ' . $myToken
    ]
]);

我正在寻找一种避免在我的服务或控制器中获取令牌的方法。将来,我可能会向API(或不同的API)发送其他请求,我不想为每个请求设置令牌。

如果重要的$theUrl是https。Symfony和Http客户端版本:4.4

共有2个答案

周和歌
2023-03-14

我有一个类似的问题,我的作用域客户端没有添加默认授权头。我的解决方案是在我的服务中注入令牌,并初始化一个全新的平面HttpClient对象,如下所示:

$client = \Symfony\Component\HttpClient\HttpClient::create(['headers' => [
        'Authorization' => 'Bearer '. $this->token,
    ]]);
闾丘博
2023-03-14

在您的情况下,您必须使用客户端名称the_api

#config/packages/framework.yaml
framework:
    http_client:
        scoped_clients:
            name_client:
                base_uri: 'http://ip:port/'
                auth_basic: 'user:password'

此处的客户名称name\u客户

#src/Controller/MyController.php
...
public function __construct(HttpClientInterface $name_client)
{
    $this->client = $name_client;
}
...

$name_client将包含具有指定参数的ScopingHttpClient类的实例

享受吧!

 类似资料:
  • 问题内容: 使用eclispe和subclipse插件时,我不断收到此错误: 我已经安装了SVNKit和JavaHL提供程序,但是在首选项中找不到它: 我正在使用eclipse for win64bit 问题答案: 您安装了什么JavaHL provider?听起来您需要64位JavaHL支持。您是否尝试过SlikSVN?

  • 我想将splashscreen活动添加到我的应用程序中。 我正在使用Android Studio 2.2,预览版3 我只是修改清单,以添加新活动: 这是我的活动。JAVA 如果我更改清单,并放置arround main活动,则应用程序将成功启动 在“我的跑步”窗口中,我可以看到以下消息: adb shell am start-n“me.project.com.project/me.project.

  • 该快速入门将展示如何搭建一个 JavaScript 客户端应用程序,其中的用户将登陆到 IdentityServer,使用 IdentityServer 发布的访问令牌调用 Web API,然后从 IdentityServer 注销。 新的 JavaScript 客户端项目 创建一个新的 JavaScript 应用程序项目。这可以是一个简单的空的 Web 项目,或者空的 ASP.NET Core

  • 我创建了一个名为person的表,并使用liquibase变更集添加了一列“phone_number”。但现在我想为它添加一个默认值。但它不起作用,到目前为止,我已经尝试过: 和 和 有人能指出我哪里做错了,并且添加默认值会给以前添加的行增加值吗?

  • 有没有人在将Swagger API定义转换为C#.NET客户端代码方面有很多经验? 大多数情况下,Swagger编辑器工作正常,但我们的问题是,为一些调用生成的代码有一堆必需但可为空的参数。例如(截断的参数列表仅用于说明): 这允许我们进行以下调用: 而不是: 我们已经尝试在适当的地方将< code >“default”:null 添加到Swagger调用定义中,但是这并没有得到想要的代码(事实上

  • 当您没有在客户端的io.connect()函数中指定端口时,客户端将监听哪个端口? 例如: 我问的原因是因为我在Heroku上部署了这个应用程序的服务器端。前端是一个IOS应用程序。我在前端使用的objective C socketIO库(https://github.com/pkyeck/socket.io-objc)要求我指定一个端口。但我不确定应该监听哪个端口,因为这在服务器端不是静态的。