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

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

Войти через центр авторизации
Похожие вопросы
Алгоритмика Москва
от 110 000 до 160 000 руб.
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.