Como solucionar o problema de CORS no Framework Lumen

Com o bloqueio de CORS, fica impossível fazer qualquer tipo de requisição para a API.

 Escrevendo testes automatizados com PHPUnit

Você acabou de desenvolver sua API com o Lumen, testou todos os possíveis endpoints no Insominia Rest e está tudo certo, porém, quando sobe à aplicação para o ambiente de produção e consome a sua API, começa a se deparar com problemas de CORS.

Abaixo vamos deixar uma das possíveis soluções, talvez a mais rápida. Vale lembrar que você precisa adaptar a solução para atender apenas a sua aplicação e não deixar qualquer requisição ter acesso a sua API. Mas antes vamos entender o que é de fato um CORS.

CORS (Cross-Origin Resource Sharing) é uma política de segurança implementada nos navegadores para controlar solicitações HTTP entre diferentes origens (domínios). Os prós incluem a proteção contra solicitações não autorizadas de origens não confiáveis, melhorando a segurança da web. No entanto, os contras envolvem a necessidade de configurar corretamente as permissões de CORS no servidor, o que pode ser complexo, e pode limitar a interoperabilidade entre diferentes domínios, exigindo precauções adicionais para desenvolvimento de APIs e aplicativos web.

Para resolver o nosso problema, tudo o que precisamos fazer é abrir o arquivo routes\web.php  e inserir as informações abaixo.
 

<?php

//Liste quem pode ter acesso as requisições
header('Access-Control-Allow-Origin: *');

//Defina os verbos aceitos
header('Access-Control-Allow-Methods: GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS');

//Defina os cabeçalhos aceitos
header('Access-Control-Allow-Headers: Content-Type, X-Auth-Token, Origin, Authorization');

/** @var \Laravel\Lumen\Routing\Router $router */

$router->get('/', function () use ($router) {
    return $router->app->version();
});

//..Suas rotas

$router->options(
    '/{any:.*}',
    [
        function () {
            return response(['status' => 'OK']);
        }
    ]
);