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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:03
75000 руб./за проект
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект