Запрос имеет недопустимый тип носителя

На работающем Symfony 3.4 я продолжаю получать эту ошибку:

An Error Occurred! Uncaught PHP Exception Negotiation\Exception\InvalidMediaType: "" 
at /var/www/mywebsite/vendor/willdurand/negotiation/src/Negotiation/Accept.php line 24

Я с трудом могу исследовать запрос, так как он терпит неудачу при его построении.

Полная трассировка:

"file": "/var/www/mywebsite/vendor/willdurand/negotiation/src/Negotiation/Accept.php:24",
    "trace": [
        "/var/www/mywebsite/vendor/friendsofsymfony/rest-bundle/Negotiation/FormatNegotiator.php:105",
        "/var/www/mywebsite/vendor/friendsofsymfony/rest-bundle/EventListener/FormatListener.php:60",
        "/var/www/mywebsite/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:212",
        "/var/www/mywebsite/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:44",
        "/var/www/mywebsite/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:127",
        "/var/www/mywebsite/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:68",
        "/var/www/mywebsite/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:200",
        "/var/www/mywebsite/web/app.php:17"
    ]

Окружающий код выглядит так:

    public function __construct($value)
    {
        parent::__construct($value);

        if ($this->type === '*') {
            $this->type = '*/*';
        }

        $parts = explode('/', $this->type);

        if (count($parts) !== 2 || !$parts[0] || !$parts[1]) {
            throw new InvalidMediaType();
        }

Когда я регистрирую значения $this->type и $value, я нахожу их равными "" (пустая строка).

Когда я пытаюсь поймать это исключение на уровне /var/www/mywebsite/web/app.php:17, у меня продолжает появляться эта ошибка...

Я действительно понятия не имею, кто может часто вызывать мой веб-сайт с этим недопустимым заголовком и как избавиться от этого загрязняющего журнала ошибок.

Любая идея?

Очень вероятно, что это запрос без заголовка HTTP Accept, возможно, бот? Для переговоров нужен тип носителя, отсюда и ошибка, которую, я думаю, можно смело игнорировать в вашем случае. Если вы хотите от него избавиться, предварительно отфильтруйте запросы, если в них нет нужных заголовков.

tchap 11.02.2019 15:38

Я понимаю, спасибо. Я просто не знаю прямо сейчас, на каком уровне я могу безопасно фильтровать это, не кодируя пакеты symfony и willdurand...

miqwit 12.02.2019 16:03

Покажите нам код контроллера, чтобы мы могли посмотреть, что можно сделать.

tchap 13.02.2019 10:39

Как видно из трассировки, он даже не доходит до контроллера. В моем приложении много контроллеров, и из журналов я не могу определить, какой маршрут вызывается. Кажется, исключение возникает во время разрешения маршрута.

miqwit 14.02.2019 14:54

Насколько я понимаю, это Rest Bundle использует Negociator, поэтому все маршруты, управляемые остальными пакетами, должны создавать журнал — вы можете проверить это, отправив недопустимый запрос самостоятельно, чтобы увидеть, появляется ли журнал. Может быть способ отключить их, приняв нулевой тип мультимедиа в ваших аннотациях для этого пакета.

tchap 14.02.2019 17:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
241
0

Другие вопросы по теме