PHP Slim - в запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin - PullRequest
0 голосов
/ 05 марта 2019

Я новичок в Slim Framework.Я создаю REST API и у меня возникают проблемы с реализацией CORS.

Сначала я пошел с примером из поваренной книги Slim :

Затем я использовал / tuupola / cors-middleware :

Я придумал следующее:

$app->options('/{routes:.+}', function ($request, $response, $args) {
    return $response;
});

$app->add(new Tuupola\Middleware\CorsMiddleware([
    "origin" => ["*"],
    "methods" => ["GET", "POST", "PUT", "PATCH", "DELETE"],
    "headers.allow" => [],
    "headers.expose" => [],
    "credentials" => false,
    "cache" => 0,
]));

Проблема заключается в маршрутах с аргументом-заполнителем.Например:

$app->get('/items', 'ItemsController:index');
$app->get('/items/{id}', 'ItemsController:getItem');

Ответ от / items имеет заголовок 'Access-Control-Allow-Origin: *', но от / items / {id} нет, и это приводит к ошибкам (политика CORS).Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 06 марта 2019

Я сам вызвал проблему, это не проблема Slim. Я создал метод временного обработчика ошибок с этим кодом:

$json = array("error" => [
    "message" => $message,
    "code"    => $code
]);

exit(json_encode($json));

Простая установка заголовка решает проблему:

header('Access-Control-Allow-Origin: *');
...