Express handling URIError: Failed to decode param
var express = require('express');
var app = express();
app.get('*', function (req, res) {
var host = req.get('Host');
return res.redirect(['https://', host, req.url].join(''));
});
var server = app.listen(8080, function () {
console.log('starting');
});
Habe ich ein einfaches Skript, dass die Weiterleitung von http zu https. Dies ist in Ordnung, außer, wenn es eine ungültige url für das Beispiel: website.com/%c0%ae%c0%ae. Es zeigt so etwas wie:
URIError: Failed to decode param '/%c0%ae%c0%ae'
at decodeURIComponent (native)
at decode_param (/...<PROJECT DIRECTORY>.../node_modules/express/lib/router/layer.js:167:12)
at Layer.match (/.../node_modules/express/lib/router/layer.js:143:15)
at matchLayer (/.../node_modules/express/lib/router/index.js:557:18)
at next (/.../node_modules/express/lib/router/index.js:216:15)
at expressInit (/.../node_modules/express/lib/middleware/init.js:33:5)
at Layer.handle [as handle_request] (/.../node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/.../node_modules/express/lib/router/index.js:312:13)
at /.../node_modules/express/lib/router/index.js:280:7
at Function.process_params (/.../node_modules/express/lib/router/index.js:330:12)
Es nicht schön, wenn sich ein Benutzer kann zufällig sehen, wo mein Projekt Dateien sind auf dem server. Jeder Weg, um behandeln Sie diese Fehler?
- return res.redirect('https://'+host+req.url); versuchen Sie, diese
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dank @Oleg für den Tipp. Aber irgendwie ist deine Lösung war keine Protokollierung Fehler für mich. Hier ist was ich habe kommen mit:
Mögliche Lösung:
Bearbeitet:
Das code-snippet platziert werden soll als die Letzte route, es wird überprüft ob ein Fehler vorhanden ist, die wurde übersprungen, andere Routen, die offensichtlich da ist, und sendet eine Standard-Antwort. Dieser Fehler tritt auf, wenn Sie hinzufügen % als letztes Zeichen ein API-Endpunkt..