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