symfony Разрешить HTTP OPTIONS для всех запросов - всех методов контроллера - без бандла

Можно сделать через костыль, создать класс:

<?php

class OptionsHelper {

    public static $test = 'uknown';

    public static function sendOptionsResponse()
    {
        $method = $_SERVER['REQUEST_METHOD'];
        if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
            $test22= 'options';

            $origin = !empty($_SERVER['HTTP_ORIGIN']) && self::isOriginAllowed($_SERVER['HTTP_ORIGIN']) ?
                $_SERVER['HTTP_ORIGIN'] : '';

            header('Access-Control-Allow-Origin: ' . $origin);
            header('Access-Control-Allow-Credentials: true');
            header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
            header('Access-Control-Max-Age: 1');
            header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description, X-AUTH-TOKEN, Set-Cookie');

            die();
        }
    }

    protected static function isOriginAllowed(string $origin): bool {    
        return ($origin === 'вашДоменСПротоколомИПортом);
    }

}

И использовать его в public/index.php:

<?php

use App\Kernel;

// -------- @todo Добавить более изящное решение для разрешения OPTIONS
 require_once 'OptionsHelper.php';
 OptionsHelper::sendOptionsResponse();
//-------------------


require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

return function (array $context) {
    return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
};

Альтернативное решение

Более изящное решение через EventListener см. тут

Key Words for FKN + antitotal forum (CS VSU):