Laravel: Asset ohne Protokoll festlegen

8

Verwenden Sie asset Hilfsfunktion wie unten:

%Vor%

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.

    
Chen-Tsu Lin 19.12.2014, 09:32
quelle

7 Antworten

5

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.

    
Atrakeur 07.10.2016 09:33
quelle
1

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 .

    
Jerodev 19.12.2014 09:38
quelle
0

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.

    
Joe 19.12.2014 09:40
quelle
0

Sie sollten diesen Artikel Ссылка überprüfen. Im Grunde können Sie die Funktion url() in AppServiceProvider überschreiben, um URLs wie /assets/something.js anstelle von http://example.com/assets/something.js

zu generieren     
Kliment 07.10.2016 14:41
quelle
0

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%     
Rakesh Sojitra 11.10.2016 06:35
quelle
0

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.

    
Sledmore 11.10.2016 15:20
quelle
0

Normalerweise verwende ich

%Vor%

ohne Aufruf der Funktion asset ()

schmutzig ich weiß, aber in 90% der Websites, die ich arbeitete, ist es eine perfekte Lösung

    
Luca C. 12.10.2016 11:15
quelle

Tags und Links