为什么%20附加到URL地址localhost

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么%20附加到URL地址localhost相关的知识,希望对你有一定的参考价值。

我正在使用mongo构建节点应用程序。我正在尝试在我的应用资源上执行基本的CRUD,即mongo。创建和读取数据工作正常,但当我尝试更新或删除mongo中的数据时会出现问题。

我已经使用摩根来记录所有请求,在我的控制台终端中,我看到%20附加到我的资源端点,如:

GET /admin/routes/delete-page/%205a958ac44d47582a841a0f5c 404 4.641 ms - 191

随后我的编辑和删除请求失败。

这是我的删除请求代码的示例:

router.delete('/delete-page/:page_id', (req, res)=>{
   let pageId = req.params.page_id;
   console.log(pageId);

   Pages.findByIdAndRemove({_id: pageId})
       .exec()
       .then(result => {
           if (result){
                console.log(`Page Deleted`);
                req.flash('success', 'Page Deleted');
                res.redirect('/admin/routes');
           } else {
                console.log(`Error Deleting Page`);
           }
       })
       .catch(err => {
          console.log(`Requested Page Not Found`);
          console.error(err);
       });

});

为什么会这样?

答案
GET /admin/routes/delete-page/%205a958ac44d47582a841a0f5c

%20有一个url编码的空间。有些事情正在产生一个破碎的环节。最有可能的候选人是你的观点(或者生成url的人)。我的第二个最佳猜测是某种代理(例如,错误的nginx规则)。

另一答案

%20意味着你提供的url有一个空间。这没有你的要求。

https://www.w3schools.com/tags/ref_urlencode.asp

另一答案

它是以URL格式编码的字符串空间。你可以找到更多here

在您的情况下,您在id的开头有一个空格。快速解决方法是,如果要删除'%20'而不是空格,请使用trimreplace从id的开头/结尾删除空格。

您可以记住,在最初存储page_id时可能会添加空间,因此您可以更好地解决问题的根本原因。

另一答案

如果我理解正确,

%20表示由“%20”替换的空格。

状态404是找不到站点,URL是否正确?

以上是关于为什么%20附加到URL地址localhost的主要内容,如果未能解决你的问题,请参考以下文章

Twitter按钮不会附加站点URL

PHP将变量附加到地址栏中的url

将表单输入值作为路径附加到操作 url

如何删除 localhost:4200 url 附加在角度 <a> 标记中的 [href] 属性中

localhost 在 Angular 后端 api 之前附加自身

Laravel 在电子邮件中附加链接,可以将用户重定向到 localhost 项目