即使对URL进行了明确编码,Express.js也不会对其进行编码

时间:2018-06-22 06:49:49

标签: google-chrome express firefox

我正在尝试创建一个登录页面,该页面接受一个可以包含空格的房间名称。当房间名称传递给POST方法中的登录功能时,我正在使用encodeURIComponent对其进行编码。日志显示它正在被编码,但是URL仍然包含空格。 我通过登录获得POST方法中的房间名称

var roomName;
roomName = encodeURIComponent(req.body.roomName);
delete req.body.roomName;
var url = '/room/login/' + roomName;
console.log('In Post Login roomname: ' + url);
res.redirect(url);

这是该功能的日志

In Post Login roomname: /room/login/trial%201

控制权传递给登录GET方法

console.log('In get login roomname: ' + req.url);
var roomName = req.params.roomName;
roomName = decodeURIComponent(roomName);
Room.getRoomByName(roomName, (err, room) => {
    if (err) throw err;

    if(room)
        res.render('login', {roomName: roomName});
    else
        res.redirect('/room/createnewroom');
});

这里的日志是

In get login roomname: /login/trial%201

它表明该网址已编码,但浏览器将该网址显示为

http://localhost:5000/room/login/trial 1

为什么URL中仍然有空格字符?

编辑: 我在Google Chrome浏览器中尝试过相同的方法。 网址不显示任何空格。是

http://localhost:5000/room/login/trial%201

与浏览器有关吗?

0 个答案:

没有答案