thumbnail

Configurando SSL no seu projeto Laravel

Yuri do Monte Yuri do Monte | 2 min de leitura
há 3 dias

O SSL te deixou na mão? Como forçar o HTTPS no Laravel e voltar a dormir em paz

E aí, dev! Sabe aquele momento de pura alegria quando você finalmente configura o SSL no seu projeto Laravel, o cadeado verde aparece e tudo parece seguro e maravilhoso? E então, você abre o console do navegador e se depara com uma chuva de erros de "mixed content"? Pois é, a vida de dev tem dessas.

Seu CSS parece que foi abduzido por alienígenas, as imagens sumiram e o JavaScript entrou em greve. O pânico bate. Você começa a questionar suas escolhas de vida, vasculha arquivos .htaccess que nem deveriam estar ali, mergulha nas configurações do Apache/Nginx e talvez até considere fazer uma oferenda aos deuses da hospedagem.

Mas respire fundo! Antes de reescrever toda a configuração do seu servidor ou de sacrificar seu café, saiba que o Laravel, na sua infinita sabedoria, nos oferece uma solução tão simples que chega a ser genial.

A solução de uma linha que salva o dia

A resposta para os seus problemas está em um lugar que você provavelmente já conhece: o AppServiceProvider. Com uma única linha de código, podemos instruir o Laravel a sempre gerar URLs com https:// quando a aplicação estiver em produção.

Abra o seu arquivo app/Providers/AppServiceProvider.php e adicione o seguinte código ao método boot( ):


<?php

namespace App\Providers;

use Illuminate\Support\Facades\URL;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(): void
    {
        if (config('app.env') === 'production') {
            URL::forceScheme('https' );
        }
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register(): void
    {
        //
    }
}

Por que isso funciona?

O método URL::forceScheme('https' ) faz exatamente o que o nome sugere: ele força o Laravel a usar https como o esquema para todas as URLs geradas pela aplicação (usando helpers como url( ), asset(), route(), etc.).

Ao colocar essa lógica dentro de um if (config('app.env') === 'production'), garantimos que essa regra seja aplicada somente no ambiente de produção, evitando comportamentos inesperados no seu ambiente de desenvolvimento local, que geralmente roda em http.

E é isso! Com essa pequena adição, todos os seus assets e links serão gerados com o prefixo https://, eliminando os erros de conteúdo misto e devolvendo a paz ao seu coração (e ao seu console ).

Agora você pode voltar a tomar seu café, com a certeza de que seu cadeado verde está a salvo e seus usuários.

Discussions

Realize login para comentar neste post
Este post não possui comentários