【问题标题】:Slim4 - getHeader is returning emptySlim4 - getHeader 返回空
【发布时间】:2023-01-27 07:33:45
【问题描述】:

我从 slim4 $request->getHeader('accept') 方法得到一个空数组来进行校验和授权。 $request->getParsedBody() 也工作正常。我遵循了如下文档中的代码,

<?php

declare(strict_types=1);

namespace App\Application\Actions\Users;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Log\LoggerInterface;
use Slim\Psr7\Response;
use Cake\Validation\Validator;
use Selective\Validation\ValidationResult;
use Selective\Validation\Factory\CakeValidationFactory;
use Selective\Validation\Exception\ValidationException;
use PDO;
use \Firebase\JWT\JWT;
use App\Application\Helpers\CommonHelper;

class ChangePwdAction implements RequestHandlerInterface
{
    private $logger;
    private $connection;

    public function __construct(PDO $connection,LoggerInterface $logger)
    {
        $this->connection = $connection;
        $this->logger = $logger;
    }

    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        echo $request->getHeader('userId');exit;
    }
}

API调用:

<?php
declare(strict_types=1);

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use App\Application\Actions\Users\ListUserAction;
use App\Application\Actions\Users\ChangePwdAction;
$app->group('/v1/user', function (Group $group) {
        $group->get('', ListUserAction::class);
        $group->post('/changePwd/{id}', ChangePwdAction::class);
    });

日志结果和空数组:

【问题讨论】:

  • 我将从修复您遇到的 500 错误开始。
  • @CBroe - 用日志结果更新了帖子 - 一个空数组
  • 您不应该使用名为 userId 的标题作为开头。约定是以X- 前缀开始任何未由任何标准/RFC 定义的自定义标头名称,因此如果有的话,您应该在此处发送类似X-User-Id 的内容。 (也许框架或服务器“过滤掉”了这些违反约定的标头?)
  • @CBroe - 我试图传递和接收'X-User-Id',仍然得到同样的错误
  • 尝试转储整个$request-&gt;headers,看看能得到什么。您还可以转储 $_SERVER,然后查看从中得到了什么。如果这个标头还没有到达您的应用程序,它可能已经被 PHP / Web 服务器过滤掉(或重写为不同的名称)。

标签: php api header postman slim-4


【解决方案1】:

你需要使用 $request->getHeader('userId')[0]

【讨论】:

    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2020-07-24
    • 2012-01-10
    相关资源
    最近更新 更多