@kaxa3201

Почему возвращается 500 ошибка вместо 400 и 401?

Почему возвращается 500 ошибка
5d5a799b644c8967468688.png
App.php
    public function run()
    {
        $matcher = new UrlMatcher($this->routes, $this->requestContext);
        try {
            $this->request->attributes->add($matcher->match($this->request->getPathInfo()));
            $this->controller = $this->getController();

            $this->arguments = $this->getArguments($this->controller);
            $response = $this->executeAction();
        } catch (ResourceNotFoundException $exception) {
            throw new HandlerException('not found',404);
        }

        if (!empty($response) && is_object($response)) {
            $response->send();
        } else {
            echo $response;
        }
    }


AuthorizationMiddleware.php

    public function handle(Request $request, \Closure $next)
    {
        $token = $request->headers->get('Authorization');
        $authorization = $request->headers->get('Authorization');

        if ($authorization === null) {
            throw new \Exception('Authorization required',403);
        }
        JWT::$leeway = 10;
        try {
            $decoded = JWT::decode($token, getenv('JWT_SECRET_KEY'), ['HS256']);
            set_user_id($decoded->user_id);
        } catch (ExpiredException $e) {
            throw new \Exception('Provided token is expired', 400);
        } catch (SignatureInvalidException $e) {
            throw new \Exception('Signature verification failed', 401);
        }

        return $next($request);
    }
  • Вопрос задан
  • 849 просмотров
Пригласить эксперта
Ответы на вопрос 2
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
А код ответа(http status) и код исключения это разные вещи. Для того, чтобы явно указать веб-серверу, что исключение ассоциировано с определенным кодом ответа, в фреймворках используют особенные исключения. К примеру в Yii2: NotFoundException - 404, BadRequestException - 400. И если фреймворк перехватывает эти исключения, то он точно понимает, что нужно отдать респонс с определенным http-кодом. Изучите документацию своего фреймворка
Ответ написан
@Randewoo
500 Internal Server Error - означает, что в работе бекенда произошла ошибка.
А именно - критическая ошибка на стороне PHP, но у вас все равно происходит рендеринг страницы, значит, криво настроили сервер.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы