Autour de Laravel

[EASY SOLUTIONS w/ explanations ] ASSET DOES NOT WORK IN PRODUCTION

Avatar de AxelAMGHAR
AxelAMGHAR

Hello,

IF you want directly the solution go to 2 SOLUTIONS in the middle ELSE if you want to unserstand the problem first

Why asset doesn't work in production , i search on the net and see that many people have the same problem as me and i found so many solutions that i can't understand or that don't work at all. But after searching on my own, i found the easiest solution and no one was sharing it on the net, so i sharing it right here :)

First understand the problem : in your environement variables with laravel, you surely know the APP_URL , it help with routes and other things, but there is an other env variable less known. It's the ASSET_URL, and in production if you are in https, laravel search the url of your asset in http so in your console you surely have an error like that Mixed Content: The page at 'https://your_url' was loaded over HTTPS, but requested an insecure script 'http://your_url/js/app.js'. This request has been blocked; the content must be served over HTTPS. this is an example with the script put you can have the same error with images or styles So the solution is to set your ASSET_URL with your https url

2 SOLUTIONS :

prerequisite APP_URL is set with your production url

1 SOLUTION

  1. go in your /config/app.php
  2. Put the default ASSET_URL with your production url don't forget the https example : before : 'asset_url' => env('ASSET_URL', null), after : 'asset_url' => env('ASSET_URL', 'https://my-url'),

2 SOLUTION

  1. go in you .env at the root of your project
  2. you also can change your asset_url directly in this .env example : ASSET_URL=https://my-url

An annex solution can be done with deploy application It allow you to not change your files .env or app.php example: I use heroku to deploy laravel app and i can directly set my asset_url with heroku config:add ASSET_URL=https://my-url It just depands of your deploy application

For me is the easiest way to deal with this issue I hope that it helped you

Posté il y a 1 mois
Avatar de AxelAMGHAR
AxelAMGHAR

[FRENCH]Bonjour,

SI vous voulez directement la solution, allez à 2 SOLUTIONS au milieu SINON si vous voulez d'abord comprendre le problème

Pourquoi asset doesn't work in production, j'ai cherché sur le net et je vois que beaucoup de gens ont le même problème que moi et j'ai trouvé tellement de solutions que je ne comprends pas ou qui ne fonctionnent pas du tout. Mais après avoir cherché par moi-même, j'ai trouvé la solution la plus simple et personne ne la partageait sur le net, donc je la partage ici :)

Comprenez d'abord le problème: dans vos variables d'environnement avec laravel, vous connaissez sûrement l'APP_URL, cela aide avec les routes et autres choses, mais il y a une autre variable env moins connue. C'est le ASSET_URL, et en production si vous êtes en https, laravel recherche l'url de votre asset avec http donc dans votre console vous avez sûrement une erreur comme ça The page at 'https://your_url' was loaded over HTTPS, but requested an insecure script 'http://your_url/js/app.js'. This request has been blocked; the content must be served over HTTPS. ceci est un exemple avec le script mis vous pouvez avoir la même erreur avec les images ou les styles donc la solution est de paramétrer votre ASSET_URL avec votre URL https

2 SOLUTIONS:

la condition préalable : APP_URL est définie avec votre URL de production

1 SOLUTION

allez dans votre /config/app.php Mettez le ASSET_URL par défaut avec votre URL de production n'oubliez pas https: avant: 'asset_url' => env ('ASSET_URL', null), après: 'asset_url' => env ('ASSET_URL', 'https: // mon-url '),

2 SOLUTION

aller dans .env à la racine de votre projet vous pouvez également modifier votre asset_url directement dans ce .env: example ASSET_URL = https: // my-url

Une solution annexe peut être faite avec une application de déploiement Elle vous permet de ne pas modifier vos fichiers .env ou app.php exemple: j'utilise heroku pour déployer l'application laravel et je peux directement définir mon asset_url avec la configuration heroku: ADD ASSET_URL = https: // my-url Cela dépend simplement de votre application de déploiement

Pour moi, c'est la façon la plus simple de traiter ce problème, j'espère que cela vous a aidé

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.