Umleitung im cakephp-ssl-site-Strecken zu http nicht https
Entwickelt ich ein cakephp-Website, die die Verwendung von ssl für alle Seiten. Es funktioniert wie erwartet, außer wenn ich per redirect in einem controller-Umleitung auf http: //subdomain.domain.com nicht https: //subdomain.domain.com/controller/action.
Habe ich gelöst, indem es einen virtuellen host für port 80 zeigen auf der cakephp-Anwendung Hinzugefügt und diese rewrite-Regeln in .htaccess
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
Diese Fänge dieser situation und redirect auf https, aber das gibt unnötigen zusätzlichen traffic auf dem server.
Die Ursache für diesen zusätzlichen Verkehr wird die Umleitung-Funktion, wie es generiert falsche urls. Ich habe mir in der redirect-Funktion und ruft Sie auf router::url zum erstellen der tatsächlichen url. Jedoch bin ich nicht in der Lage, herauszufinden, wie und wo weisen Sie den router für die Verwendung von https, nicht http.
Tim
InformationsquelleAutor Tim Wentzlau | 2010-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nehme ich ein bisschen raten, aber ich vermute, es ist diese sehr RewriteRule, die Unordnung der Dinge.
Sollten Sie "Weiterleitung" nicht "umschreiben". Kuchen-die generierten links sind in der Regel relativ zum root, also nicht angeben, ein Protokoll, es sei denn, Sie passieren das "true" als zweiten parameter.
Ich habe auch apache lauscht auf beiden 80 und 443, so dass ich zumindest reagieren, um falsche Anforderungen.
Dies ist der code den ich habe in meinem AppController-Klasse, das gleiche zu tun:
Ich habe auch meine eigene config 'forceSSL' option im bootstrap.php für drehen Sie diese auf, und je nach der Umgebung, so dass muss auf true gesetzt werden, für die oben genannten arbeiten.
InformationsquelleAutor Jamie
Ich habe den Fehler gefunden es war eine Fehlkonfiguration des Apache.
Ausprobieren Jamie ' s Lösung, die Seite endete in einer redirect-Schleife, weil RequestHandler->isSSL() false zurück, auch wenn die Anfrage wurde https. Ich entdeckte dann, dass die $_SERVER['https'] war nicht gesetzt und das $_SERVER['port']: 80, nicht 443 als erwartet.
Zu diesem Punkt habe ich gelegt, mein ssl-Direktiven in sites-available/default,
Verschieben der ssl-Direktiven für den virtuellen host für die subdomain, ist das Problem behoben, mit redirect-loops.
Eigentlich ist auch gelöst mein anfängliches problem, weil die Methode Router::url-checks für $_SERVER['https'] gesetzt, wenn es generiert eine url, die mit https beginnt, da ansonsten nur http:
Ich habe beide getestet Jameies Lösung und meine eigene rewrite-Regeln in .htaccess und Sie beide wie erwartet funktionieren, nachdem das Update.
Tim
InformationsquelleAutor Tim Wentzlau
Sein Beispiel ist schon im Kochbuch
http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html#usage
InformationsquelleAutor Kunal Panchal