DEV Community

loading...

Resolvendo problema de Access-Control-Allow-Origin (CORS) no Laravel

Thiago Luna
I am a Senior Software Developer with 15 years of experience willing to learn new technologies.
・1 min read

Quando estamos desenvolvendo APIs RESTFULL, é comum esbarrarmos com erro de CORS do tipo
Erro CORS

Esse bloqueio se da por conta do protocolo HTTP e precisamos resolver.

Existem várias soluções na internet, como alterar o .htaccess, instalar pacotes como o barryvdh/laravel-cors entre outros.

A solução que compartilho com vocês é bem simples e resolveu o meu problema no Laravel 6.
Vamos lá!

1- Crie um novo Middleware

php artisan make:middleware Cors

2- Adicione neste novo Middleware, localizado em app/Http/Middleware/Cors.php, o seguinte:
Dentro do método handle

public function handle($request, Closure $next)
    {
        return $next($request)
             //Acrescente as 3 linhas abaixo
            ->header('Access-Control-Allow-Origin', "*")
            ->header('Access-Control-Allow-Methods', "PUT, POST, DELETE, GET, OPTIONS")
            ->header('Access-Control-Allow-Headers', "Accept, Authorization, Content-Type");
    }

3- Edite o arquivo app\Http\Kernel.php da seguinte forma:
Dentro de $middleware acrescente o middleware que acabou de criar:

protected $middleware = [
        \App\Http\Middleware\TrustProxies::class,
        ...
        ...
        \App\Http\Middleware\Cors::class, //acrescente essa linha
    ];

4- Teste novamente sua aplicação e vida que segue!

Tem muito conteúdo bom na internet explicando sobre CORS, porque acontece isso, n maneiras de resolver. Então, quis trazer um conteúdo curto e direto ao ponto, pois nosso prazo anda bem curto para as entregas, né?!

Agora, vamos voltar a codar porque a sprint está quase acabando.

Um abraço e até o próximo direto ao ponto.

Discussion (10)

Collapse
maykel131 profile image
Maykel Developer

vc é demais cara. muito bom seu post, tinha dias buscando o problema achando que era configuração no front. ai busquei um post ai ele disse que o problema era no back ai dei com seu post e deu tudo certo

Collapse
thiagoluna profile image
Thiago Luna Author

Que bom que conseguiu resolver o problema!
Obrigado pelo feedback.

Collapse
billbarsch profile image
Bill Barsch • Edited

só vim agradecer, perfeito, funcionou de imediato!
(obs: funcionou no laravel 8!)

Collapse
thiagoluna profile image
Thiago Luna Author

Eu que agradeço pelo feedback e o valeu por avisar que funciona no laravel 8 também.

Collapse
marcellopato profile image
Marcello Pato

Aqui no meu dev Laravel 8 não funcionou...

Collapse
ccorgozinho profile image
CCorgozinho

Muito obrigado meu companheiro.

Tive de fazer o login simplesmente para agradecê-lo pela ajuda.

Após horas buscando pela net algo que pudesse me ajudar, você foi o salvador.

Ajudou um jovem iniciante.

Obrigado de verdade.

Collapse
samuraipetrus profile image
Petrus Nogueira

No Laravel 8 existe o fruitycake/laravel-cors instalado por padrão no projeto, acho válido analisar a documentação dessa tecnologia antes de partir para a solução exposta na publicação. github.com/fruitcake/laravel-cors

Collapse
kalecio profile image
Kalécio

Me salvasse agora, show de bola

Collapse
thiagoluna profile image
Thiago Luna Author

TMJ parceiro. Obrigado pelo retorno.

Collapse
ikarofox profile image
IkaroFox

Tks soldier, this solution work on laravel 8, at least for me .