【问题标题】:How to check the HOST using ExpressJS?如何使用 ExpressJS 检查主机?
【发布时间】:2011-09-24 02:29:56
【问题描述】:

我必须检查http请求的HOST,如果它等于example.comwww.example.com,我必须做一个301重定向。

如何使用 Node.js 和 Express Web 框架做到这一点?

【问题讨论】:

  • http 请求的 HOST 是头部的一部分。传递给回调的请求对象有一个 .header() 方法。您是否尝试过阅读文档?

标签: javascript linux node.js express


【解决方案1】:

【讨论】:

  • 是的,我知道,但是如何检查它是否等于 example.com 或 www.example.com ?
【解决方案2】:

req.header('host')

在您的请求处理程序中使用它。

【讨论】:

  • 不应该是req.headers.host吗?
【解决方案3】:

使用正则表达式进行字符串搜索,如下所示:

if ( req.headers.host.search(/^www/) !== -1 ) {
  res.redirect(301, "http://example.com/");
}

搜索方法接受一个正则表达式作为第一个参数,用斜杠表示。表达式中的第一个字符 ^ 表示显式查看字符串的开头。表达式的其余部分正在寻找三个显式的 w。如果字符串以“www”开头,则搜索方法将返回匹配的索引,如果有的话 (0),或者 -1,如果没有找到。

【讨论】:

    【解决方案4】:

    使用

    req.headers.host;
    

    req.header('host');
    

    两者都会返回您的主机名。例如localhost:3000

    【讨论】:

      【解决方案5】:

      今天对我来说是 req.host、req.hostname 和 req.headers.host - 不过我要使用 req.host。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 2012-09-09
        相关资源
        最近更新 更多