Javascript 为什么要跳过URL的第一个字符

Javascript 为什么要跳过URL的第一个字符,javascript,node.js,server,Javascript,Node.js,Server,我正在学习node.js,从中我发现了这段代码,其目的是解码请求到服务器的url,并相对于服务器的工作目录解析它: const{parse}=require(“url”); const{resolve,sep}=require(“路径”); const baseDirectory=process.cwd(); 函数url路径(url){ 让{pathname}=parse(url); 让path=resolve(decodeURIComponent(路径名).slice(1)); if(path

我正在学习node.js,从中我发现了这段代码,其目的是解码请求到服务器的url,并相对于服务器的工作目录解析它:

const{parse}=require(“url”);
const{resolve,sep}=require(“路径”);
const baseDirectory=process.cwd();
函数url路径(url){
让{pathname}=parse(url);
让path=resolve(decodeURIComponent(路径名).slice(1));
if(path!=baseDirectory&&
!path.startsWith(baseDirectory+sep)){
投掷{状态:403,身体:“禁止”};
}
返回路径;
}
这本书没有提到行中的
.slice(1)

let path = resolve(decodeURIComponent(pathname).slice(1));

为什么不干脆
slice()
?在与当前工作目录的路径进行比较之前,为什么要跳过解码URL的第一个字符?

路径名的第一个字符将是
/
,目标是使用当前工作目录的相对路径,而不是从文件系统根开始的绝对路径。

但是我创建了一个基本路径行为
console.log(process.cwd())
的服务器,我得到了一个路径,路径以
/home
开头,路径为
/
。那么您需要解码URL中的
/
,为什么?你自己没有连接到cwd的路径,是吗?也许我有点困惑(因为我对servers和node.js完全陌生),但这不是
!path.startsWith(baseDirectory+sep)
试图确定
path
是否以
baseDirectory+sep
开头?如果
baseDirectory
aka
process.cwd
/
开头,我们修剪
路径中的前导
/
,比较不是没有用吗?
/
是从
路径名
切片的,但是
路径
是通过
解析
传递的结果。哦,你说得对。我想这是关键点。我将检查文档中的
resolve
。谢谢你所做的一切。