2015-10-15 35 views
0

我有这种类型的节点快递航线 - 绝对URL VS相对URL

的Express 4种的途径来处理表单提交的简单形式,如下所示

app.post('/articles', routes.article.keyword); 

的实际路线文件有以下几种:

exports.keyword = function(req,res,next){ 
    res.send(req.body.keyword); 
}; 

基于上述情况,当我在浏览器中发布表单时,我看到一个页面“的地址不明白”。

但是,如果我使用相对URL的形式操作,即

它可以完美运行。为什么这样?

因为在现实中,我有时可能必须将数据发布到不同的域或URL。

+0

您需要指定一个完整的url http://..../ action或相关的url。如果您发布到同一主机,则无需指定完整的网址 –

+0

是的,您是对的。谢谢! – Jay

回答

0

我会发布我的评论作为答案,因为它有帮助。

为了使行动工作,你需要或者指定完整的URL,包括架构:

<form name="keywords" action="http://www.example.com/articles" method="post"> 

或者,你可以使用相对URL:

<form name="keywords" action="/articles" method="post"> 
0

相对路径是一个不以/(正斜杠)开始的...通常,这将尝试从当前url的基本目录加载(您可以在html中设置,尽管浏览器默认为url的'dirname' (例如,页面上的'img/something.gif') '/some/path/index.html'将从/some/path/img/something.gif'中获取)。

绝对路径是以/开始的路径。它会被加载使用相同的架构,主机和可选的端口,用户等(完整的URL语法:scheme:[// [user:password @] host [:port]] [/] path [?query] [#片段] ...在这里阅读更多:https://en.wikipedia.org/wiki/Uniform_Resource_Locator)。 (http/https/ftp等)...然而(这很方便):如果你打算使用相同的模式(它保持不变您的网站的安全分数高),您可以跳过它,以及冒号。

例如:当观看距离“https://blah.net”网站,并尝试加载从谷歌的资源(分析可能),你可以参考它为:

“//google.com/path/to/whatever '

如果页面通过https加载,则会使用https,如果不是,则使用http ...使您无需确定呈现页面时使用的方案。

+0

请注意''''只能在服务器(甚至是本地主机)上运行,但如果你只是用浏览器打开一个本地'.html'文件 – 2016-10-21 20:33:12