真正开始解析 URI 之前,现需要对 URI 进行转义,而这个中间件就起到了这个目的
- 转义
request.url 转义
request._parsedUrl内的内容( _parsedUrl 是由 parseurl 这个库解析 URL 生成的请求路径信息,内部有更详细的 URL 信息,许多库有用到里面的信息,所以有必要里面的内容也一并转义)export function decodeURIMiddleware(): Connect.NextHandleFunction {return (req, _, next) => {// #2195req.url = decodeURI(req.url!)// `sirv` middleware uses the req._parsedUrl values to find the file,// so decode it all together.// @ts-ignoreconst parsedUrl = req._parsedUrlfor (const key of Object.keys(parsedUrl)) {const val = parsedUrl[key]if (val) parsedUrl[key] = decodeURI(val)}next()}}
