我实现了一个简单的 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 或其他内容时也是如此。
这里的问题是概念性的,而不是您的代码 - 与可能具有子域的域不同,IP (v4) 地址始终是由点分隔的四个整数。您根本无法向 IP 地址添加子域。