Ich baue eine Website mit NodeJS und stelle sie auf Heroku bereit. Aber als ich die Website öffnete, ging etwas schief. Hier ist das Problem:NodeJS: HTTPS-Anforderung senden, aber HTTP erhalten
Code: In der Hauptquelldatei meiner Web:
app.get('/', (req, res) => {
var data = {
rootURL: `${req.protocol}://${req.get('Host')}`,
};
res.render('home.html', data);
});
Dann in home.html, schließe ich das folgende Skript:
<script type="text/javascript">
$.getJSON('{{rootURL}}'+'/about', {}, function(data){
// Code here is deleted for now.
}).fail(function(evt) {
// Code here is deleted for now.
});
</script>
Here I Verwenden Sie die Vorlage "hbs", sodass {{rootURL}} gleich der Eigenschaft 'rootURL' innerhalb des Objekts 'data' ist, das zusammen mit der Seite 'home.html' gerendert wird. Das '/ about' ist eine der APIs, die ich für mein Web entworfen habe. Es sendet im Grunde etwas über die Website selbst zurück und diese Informationen sind in JSON verpackt.
Dann kommt hier das Problem. Der Code funktioniert lokal gut und funktioniert gut, wenn ich eine HTTP-Anforderung anstelle von HTTPS an Heroku sende. Aber wenn ich HTTPS-Anforderung an Heroku senden, werde ich 'Mixed Content' Fehler erhalten: Errors I get in Chrome Console.
Ich wechselte dann zu 'Elemente' Reiter in dem Entwickler-Tool, und ich sah diese: The schema is HTTP, not HTTPS!
I bin hier sehr verwirrt. Ich nehme einfach die "Protokoll" -Eigenschaft innerhalb des "req" -Objekts und fülle die Vorlage damit aus. Also nehme ich an, wenn ich in meinem Chrome-Browser '[my-website-name] .herokuapp.com' mit 'https' schema eintrage, sollte meine auf Heroku bereitgestellte nodeJS-App 'https' für req.protocol erhalten. Aber anscheinend ist es nicht der Fall. Was ist hier falsch?
Vielen Dank! Schätze es wirklich! Ja, du hast recht. Es macht keinen Sinn, dort die vollständige URL zu verwenden. Und die URL im ersten Bild ist nicht das, was ich beabsichtigt habe .... – codeavor