【问题标题】:Node Express routes - Absolute URL vs Relative URLNode Express 路由 - 绝对 URL 与相对 URL
【发布时间】:2015-10-15 10:30:47
【问题描述】:

我有一个这种类型的简单表格

<form name="keywords" action="www.mydomain.com:6161/articles" method="post">
<input type="text" name="keyword" />
<input type="submit" name="submit" value="Submit" />
</form>

处理form post的Express 4条路线,如下

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

实际的路由文件有以下内容

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

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

但是,如果我在表单操作中使用相对 URL,即

完美运行。为什么会这样?

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

【问题讨论】:

  • 您需要指定一个完整的 url http://..../action 或一个相对的。如果您要发布到同一主机,则无需指定完整的 url
  • 是的,你是对的。谢谢!

标签: node.js express routes relative-path absolute-path


【解决方案1】:

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

为了使操作生效,您需要指定完整的 url,包括架构:

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

或者您可以只使用相对网址:

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

【讨论】:

    【解决方案2】:

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

    绝对路径是以 / 开头的路径。它将使用相同的模式、主机和可选的端口、用户等加载(完整的 url 语法:scheme:[//[user:password@]host[:port]][/]path[?query][#片段]...在这里阅读更多:https://en.wikipedia.org/wiki/Uniform_Resource_Locator)。

    一个完整的 url 是一个以模式开头的 URL(http/https/ftp 等...)......但是(这很方便):如果您要使用相同的模式(它可以让您的网站的安全分数高),您可以跳过它,连同冒号。

    例如:从“https://blah.net”查看网站并尝试从 google 加载资源(可能是分析)时,您可以将其引用为:

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

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

    【讨论】:

    • 请注意//只能在服务器(甚至是本地主机)中工作,但如果你只是用浏览器打开本地.html文件则不行
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    相关资源
    最近更新 更多