Javascript 使用Node.js,如何将随机字符串路径重定向到主页?

Javascript 使用Node.js,如何将随机字符串路径重定向到主页?,javascript,node.js,Javascript,Node.js,我已经设置了一个典型的node.js服务器(vanilla、no-express等),它工作得非常好。但是对于我的web应用程序,我希望能够使用简单的路径来表示用户的会话ID,而不是使用查询字符串 例如,domain.com/GH34DG2将与domain.com提供相同的服务。我决定尝试这种方式,因为我见过其他应用程序使用这种格式,而且它比查询字符串更短、更美观。一旦向用户提供了页面,客户端将解密路径并使用它连接到特定会话 如何使用basic Node.js服务器实现这一点 当用户在其web浏

我已经设置了一个典型的node.js服务器(vanilla、no-express等),它工作得非常好。但是对于我的web应用程序,我希望能够使用简单的路径来表示用户的会话ID,而不是使用查询字符串

例如,
domain.com/GH34DG2
将与domain.com提供相同的服务。我决定尝试这种方式,因为我见过其他应用程序使用这种格式,而且它比查询字符串更短、更美观。一旦向用户提供了页面,客户端将解密路径并使用它连接到特定会话

如何使用basic Node.js服务器实现这一点


当用户在其web浏览器中键入或粘贴
domain.com/GH34DG2
时,我需要我的服务器提供索引页,而不是尝试读取文件
domain.com/GH34DG2
,但它仍然需要像往常一样读取其他路径,如样式表、视频等

也许你可以用一种叫做md5的东西

在php中,我们有

md5(uniqid(rand()));

在node.js中,他们有一个MD5模块,只需解析请求url即可

这是我刚刚在google上找到的一个简单的服务器示例,我在HandlerRequest中添加了一些东西:

var http = require('http');

const PORT=8080; 

function handleRequest(request, response){

    // parse request.url to pull out the session_id
    var session_id = request.url.split('/')[1];

    // do something with session_id
    // serve page/data/whatever

    response.end('It Works!! Path Hit: ' + request.url);
}

var server = http.createServer(handleRequest);
server.listen(PORT, function(){
    console.log("Server listening on: http://localhost:%s", PORT);
});

我意识到答案其实非常简单,令人尴尬。如果检查路径是否缺少扩展名,然后提供
/index.html
(或home.html或您使用的任何一个扩展名),我需要做的就是检查路径是否缺少扩展名,下面是我的“checkhome请求”:


假设节点服务器是最常见的例子,我的是非常模块化的,在这里发布会更复杂,而不是真正有必要问这个问题。你停留在哪一部分?您使用的任何处理程序函数都应该能够检索请求的路径。为什么不在头中设置会话ID,并在路由中使用该ID来获取正确的数据并使用新视图更新客户端?@MichaelJosephAubry我不确定我是否理解您的意思,但目的是能够为用户提供URL
domain.com/GH34DG2
,用户可以与朋友共享该URL,以便其他人加入他们的会话。@hofan41因此,我的处理程序需要在提供服务之前将路径指向索引,因为默认情况下,它会尝试读取不存在的文件
GH34DG2
。我认为您不理解。服务器已经生成了会话ID。只是当用户在其web浏览器中键入或粘贴
domain.com/GH34DG2
时,我需要我的服务器提供索引页,而不是尝试读取文件
domain.com/GH34DG2
对不起,我的坏消息。为什么不试着解析请求呢?如果你看我对他的回答的评论,我认为他的回答与我所问的不一样。但不是每个路径都是会话id。还有图像、视频、样式表、javascript等等。看起来您的示例将把所有内容都解析为会话ID。是的,因此您的解析器需要能够检测它是什么类型的路由,这取决于您希望如何使用regex或某些条件实现。如果用户输入任何不带扩展名的URL怎么办?例如:
domain.com/23DH2
domain.com/23QH1
?@stdob——您的意思是url是否是无效的会话id?然后,他们无法加入会话,url将重置为
domain.com/
,并通知用户他们试图加入无效会话。
function checkHomeReq(path, ext) {
    if (path === "/" || ext == '' )
        path = "/index.html";
    return path;
}