Express.js:从 URL 解析 Predomain 适用于 localhost,但不适用于 127.0.0.1

问题描述 投票:0回答:1

我实现了一个简单的 Express.js 应用程序,该应用程序从传入请求的主机名中提取预域。当我使用 localhost:3000 时,代码似乎可以正常运行,但当我尝试 127.0.0.1:3000 时,代码会失败。

这是我正在使用的代码片段:

const express = require('express');
const app = express();

app.use((req, res, next) => {
  const parts = req.hostname.split('.');
  req.predomain = parts[0];
  next();
});

app.get('/', (req, res) => {
  res.json({ predomain: req.predomain });
});

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

当我访问 http://harsh.localhost:3000 时,API 按预期正确返回预域(苛刻)。但是,当我访问 http://harsh.127.0.0.1:3000 时,邮递员或 chrome 无法找到地址本身。我很好奇为什么会发生这种情况,以及如何修改代码以正确处理前域的提取,即使在使用 127.0.0.1 或其他内容时也是如此。

node.js express dns ip-address
1个回答
1
投票

这里的问题是概念性的,而不是您的代码 - 与可能具有子域的域不同,IP (v4) 地址始终是由点分隔的四个整数。您根本无法向 IP 地址添加子域。

© www.soinside.com 2019 - 2024. All rights reserved.