Wenn ich versuche, eingehenden Verkehr zu https umzuleiten, bekomme ich eine unendliche Umleitungsschleife.
%Vor%Die request.url wird nie in das Präfix https geändert. Ich möchte Herokus Huckepack-SSL verwenden, um die Kosten zu minimieren.
Auf Heroku wird SSL (https) beendet, bevor es Ihre Anwendung erreicht. Ihre App sieht also keinen SSL-Datenverkehr. Um zu prüfen, ob eine Anfrage mit https gestellt wurde, müssen Sie stattdessen den Header x-forwarded-proto
prüfen. Weitere Informationen finden Sie hier: Wie wird Python nur auf Heroku https erstellt? >
UPDATE: Zu Ihrer Verwendung sollten Sie einfach request.url nach "myapp.herokuapp.com/checkout/" überprüfen; und vergewissern Sie sich, dass die Kopfzeile "https"
istIch habe SSLify, url_for _scheme und ein PREFERRED_URL_SCHEME versucht; aber keiner hat geklappt, zumindest bei Release-Level .. (funktionierte gut lokal) Dann dachte ich;
%Vor%Dies ist im Wesentlichen eine andere Möglichkeit, ohne Konfigurationen oder Erweiterungen fertig zu werden.
Ich konnte den flask-sslify-Code für eine einzelne Ansicht verwenden. Nur benötigt, um zu überprüfen, ob die Anfrage mit SSL gemacht wurde oder nicht, und der Antwort korrekte Header hinzuzufügen. Ссылка
%Vor% Sie müssen nur den Header X-Forwarded-Proto
überprüfen. Wenn der Wert false lautet, leiten Sie die URL zur entsprechenden https-URL um.
Hier der Code, um https für alle Anrufe in einer flask-App zu erzwingen, die auf heroku läuft:
%Vor%