Verwenden Sie asset
Hilfsfunktion wie unten:
wird
erhalten %Vor%Gibt es Laravel-Build-In-Lösungen können es sein
%Vor% und ordnungsgemäß mit http
und https
protokollen angezeigt?
[BEARBEITEN]
Ich weiß, dass Laravel normalerweise das Protokoll korrekt erkennt, aber wenn es hinter einem Load Balancer ist, tut es das nicht. Also suche ich immer noch nach einer Lösung.
Laravel erstellt gesicherte Verbindung nur, wenn die Anfrage als gesichert gilt.
Laravel hat bereits eine Möglichkeit, Nicht-HTTP-Verkehr als "gesichert" zu behandeln, wenn es von einem "vertrauenswürdigen Proxy" kommt.
Sie können solche vertrauenswürdigen Proxys in Ihrem Anwendungsdienstanbieter wie folgt deklarieren:
%Vor%Stellen Sie außerdem sicher, dass der loadbalancer die folgenden Header korrekt definiert:
%Vor%"Öffentliche" Proxies wie cloudflare machen das schon jetzt.
Grundsätzlich ist hier die Client-Verbindung auf einem der Frontend-Server (als Proxy) beendet, daher müssen wir die Kommunikation von diesem Server als vertrauenswürdig deklarieren, damit Laravel anstelle der Werte Header vom Proxy-Server verwendet readed localy.
Dadurch können Funktionen wie Request :: isSecure () oder Request :: ip () ein konsistentes Ergebnis liefern.
Laravel ändert automatisch die URL des Inhalts in das Protokoll, das zum Laden der Site verwendet wird.
Wenn Ihre Site über eine sichere Verbindung geladen wird, verwenden die Asset-Links automatisch https.
Aktualisierung:
Wenn Sie die Assets nur mit //
anzeigen möchten, könnten Sie Ihr eigenes HTML-Makro schreiben .
Der Code, der Asset-URLs generiert, befindet sich in illuminate / Routing / UrlGenerator.php
Es gibt eine forceSchema () -Methode, die leicht modifiziert werden kann, um das zu tun, was Sie benötigen. Um ehrlich zu sein, sollte diese Funktionalität wahrscheinlich in Laravel liegen und es könnte sich lohnen, eine Pull-Anfrage auf ihrem GitHub zu senden.
asset () generiert eine URL für ein Asset unter Verwendung des aktuellen Schemas der Anfrage (HTTP oder HTTPS):
Und wenn Sie eine externe URL angeben möchten, für die Sie nicht über http oder https wie cdn URL wissen, können Sie wie folgt schreiben
%Vor%Sie können jedoch wie
schreiben %Vor%ODER
%Vor%Ich hatte das gleiche Problem, dann entdeckte ich, dass die asset () -Methode eine optionale zweite Variable hat, true oder false für SSL-Anfragen.
Die Lösung, die ich verwende, ist die folgende:
%Vor%Hinweis:
%Vor%Wenn meine Anwendungsumgebung lokal ist, wird SSL nicht ausgewählt. In der Produktionsumgebung werden die Assets jedoch über SSL aufgerufen.
Tags und Links php laravel laravel-helper