如何使用ExpressJS检查主机?

13

我需要检查HTTP请求的HOST,如果等于example.com或者www.example.com,则需要进行301重定向。

如何使用Node.js和Express Web框架实现这个功能?


5
http请求的HOST是头部的一部分。传递给您回调函数的请求对象具有.header()方法。您尝试过阅读文档吗? - Karl Knechtel
5个回答

18
req.headers.host;
或者
req.header('host');

两者都将返回主机名,例如 localhost:3000


5

我知道,但是如何检查它是否等于example.com或www.example.com? - dail

5

req.header('host')

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

注:该语句用于获取请求头中的host信息。

11
应该是 req.headers.host 吗? - Camilo Martin

2

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

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

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


1
今天对我来说,它是req.host、req.hostname和req.headers.host - 我选择使用req.host。 更新 vscode 告诉我 req.host 已经过时,应该使用 req.hostname。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接