2017-03-14 7 views
7

Ich habe die Antwort davon gefolgt: Redirect from http to https in google cloud, aber es scheint derzeit nicht mehr genau zu sein. Der Anker, auf den verwiesen wird (https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#security) scheint entfernt worden zu sein, aber ohne einen Hinweis auf einen Ersatz.HTTP zu HTTPS Umleitung auf App Engine

Als Referenz dient ich NodeJS über eine Google App (Flex) Engine. Gemäß der Antwort habe ich in meinem app.yaml bekam:

handlers: 
- url: /.* 
    script: IGNORED 
    secure: always 

Da HTTPS offensichtlich beendet wird, bevor es meine Express-Motor trifft (und Umleitung auf würde es nutzlos sein); Wie wird es aktuell korrekt umgesetzt?

Möglicherweise hilfreich, ich habe eine externe Domäne über die Registerkarte "Benutzerdefinierte Domänen" in der Konsole angeschlossen, und es ist in der Tat ein SSL-Zertifikat konfiguriert (wenn also ein Benutzer manuell auf https: //.com geht alles in Ordnung)

+0

Was ist dein aktuelles Problem? Es sollte wie erwartet zu https umgeleitet werden. –

+0

Korrekt. Ich möchte, dass die HTTP-Anfrage an HTTPS umgeleitet wird, obwohl dies momentan nicht funktioniert (d. H. Ich greife einfach ohne Umleitung auf HTTP zu, wenn ich auf die Domäne zugreife, die ich mit dieser Umgebung verbunden habe) – Art

Antwort

9

Die flexible Umgebung unterstützt derzeit keine Handler in der App.yaml. Wenn Sie https wollen: // Umleitung, haben Sie ein paar Optionen:

  • Verwenden helmet für Sie HSTS Dinge zu tun, und Ihre eigene anfängliche Umleitung implementieren.
  • Ich schrieb eine glückliche kleine Bibliothek immer SSL auf allen Strecken für Express yes-https

Wir erwägen zwingt alle Traffic auf SSL standardmäßig Auto-Umleitung. Denkst du, dass das eine gute Sache für deine Apps wäre?

+0

Danke Justin, das hat den Trick gemacht! Ich erwäge tatsächlich zu bevorzugen, dass der Verkehr über https transportiert wird. Angesichts der Einrichtung der Website (nur ein 1-Pager mit einem einzigen Formular, das PII enthält) wäre das am sinnvollsten. – Art

+0

Danke ein Tonne Mann (y). –

+0

Können Sie sich bitte meine https://stackoverflow.com/questions/47453220/http-requests-not-getting-routed-to-https-nodejs tatsächlich Ja-https funktioniert nicht für mich. –

2

Ziehen Justin Ja-https-Bibliothek konnte ich diese Arbeit bekommen:

var app = express(); 
app.use(function(req, res, next){ 
    if (req.host != 'localhost' && req.get('X-Forwarded-Proto') == 'http') { 
    res.redirect(`https://${req.host}${req.url}`); 
    return; 
    } 

    app.router(req, res, next); 
}); 

Zuerst dachte ich, ich, das zu tun, seit ich auf einer appengine Sub-Domain war und konnte nicht HSTS verwenden. Dann habe ich gelernt, dass HSTS für Subdomains funktioniert. :) Egal, ich dachte, dass die Leute vielleicht sehen wollen, was das Zauberbit ist, wenn sie aus irgendeinem Grund kein yes-https verwenden wollten.

Justin, die automatische Umleitung des gesamten Datenverkehrs zu SSL klingt für mich großartig. Ich habe gerade Stunden damit verbracht, herauszufinden, wie das geht, bevor ich diesen Beitrag gefunden habe, weil ich versucht habe, meine App dazu zu bringen, Chrome auf dem Homescreen-Installationsbanner nach https://developers.google.com/web/fundamentals/engage-and-retain/app-install-banners/ hinzuzufügen.

+0

Kannst du bitte meine https://StackOverflow.com/questions/47453220/http-requests-not-getting-routed-to-https-nodejs tatsächlich ja-https funktioniert nicht für mich. –

Verwandte Themen