0

node.jsで取得/ok/ä.txtしたい。/very///bad/%D0%B9/../../../../../request/../ok/%C3%A4.txt次の方法を発見しました。

var url = require('url'), path = require('path');
require('http').createServer(function (request, response) {

    var file = null;
    try {
        file = path.normalize(decodeURI(url.parse(request.url).pathname));
    } catch (e) {
    }

    console.log(file);
    response.end();
}).listen(3002, '127.0.0.1');

try/catch ブロックなしで、より良い方法が存在しますか?

4

1 に答える 1

0

エラーをスローすることはなく、パラメーターのタイプが ではない場合にのみエラーをスローするため、try..catchブロックを取り除くことができると思います。path.normalizedecodeURIurl.parsestring

...
if (typeof url !== 'string') {
    throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
}
...

それ以来、request.url常にstringどちらも発生しないタイプです。

于 2012-04-12T22:42:00.493 に答える