Шаблонизатор Blade обрезает протокол ссылки
Использую Laravel с шаблонизатором Blade. Столкнулся с проблемой, что нужно на странице указать ссылку типа https://example.com, а на странице вижу результат //example.com. Куда исчезает протокол ссылки? Кто сталкивался с таким, подскажите решение.
Ответы (3 шт):
Если Вы используете функцию-хелпер route, возможно у Вас сгенерировался относительный путь вместо абсолютного. У неё 3 параметра: имя маршрута, параметры и логическое значение (true или false), определяющее, будет сформирован полный путь или относительный. Попробуйте явно указать последний параметр. P.S. Не знаю, какую версию Laravel Вы используете, поэтому не могу сказать, работает ли описанная мной функция именно так.
Я бы не советовал вам что то изменять и ставить http, либо https, вместо //.
Сейчас можно указать // вместо https:// - это относительно новый формат, который понимают абсолютно все браузеры. Браузер сам понимает, необходимо ему работать через http, либо же через https.
Это поможет избежать некоторых проблем в будущем, к примеру когда сервер на который указана ссылка сменил адрес с http на https, либо же наоборот.
Недавно сталкнулся с подобной проблемой в Laravel 7. Дело в том что blade стал по особому обрабатывать route вызванный внутри тега a атрибута href И отдельно, то в одном случае есть https в дрогом нету.
<a href="{{route('home')}}">2</a>
{{route('home')}}
<a href="https://example.local/home">2</a>
http://example.local/home
Решением было
if (env('APP_ENV') === 'production') {
URL::forceScheme('https');
}