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']);
}
]
);