【问题标题】:Something is calling POST /inform in nodejs express project在 nodejs express 项目中调用 POST /inform
【发布时间】:2018-07-20 21:22:52
【问题描述】:

我有一个使用 express 的非常简单的 nodejs 项目。当我在本地启动这个项目时,我注意到有些东西每 30 秒调用一次 POST 来 /inform。我想知道什么叫通知,目的是什么。

我是节点新手。这是正常的吗?我没有为此调用实现路由,所以它会导致 404。

这是我的主要应用:

const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const fileUpload = require('express-fileupload');

const app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(fileUpload());

// routes
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use((req, res, next) => {
  console.log(req)
  next(createError(404));
});

// error handler
app.use((err, req, res) => {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

在我的控制台中,我大约每 30 秒看到一次:

POST /inform 404 14.002 ms - 2158
POST /inform 404 13.910 ms - 2158
POST /inform 404 31.536 ms - 2158

编辑:

感谢 cmets。我将我的快速端口更改为 8000,但它不再发生。所以我本地机器上的一些东西正在循环并发布到 localhost:8080/inform。我必须追查到这一点。

【问题讨论】:

  • 找不到任何理由在您的应用文件之后调用/inform 路由。你能分享那些用户和索引路由sn-ps吗?
  • 只需尝试运行不同的端口,以确保您机器上的其他应用程序正在调用您的 api。
  • 如果其他人有同样的问题,我认为它来自我的 Unifi 网络设备。

标签: node.js express


【解决方案1】:

我家里有一个 Ubiquity Unify 网络堆栈。在我的笔记本电脑上运行(和停止)Unifi 控制器后,我所有的 Unify 设备都会继续发送POST <laptop IP>:8080/inform

我自己的应用程序的日志被相同的未知路由填满:“/inform”错误。

解决方案:

  • 选择不同的端口
  • 将您的应用程序绑定到“localhost”而不是“0.0.0.0”
  • 获取专用控制器设备,例如 Raspberry Pi 或 Unifi Cloud Key

【讨论】:

    【解决方案2】:

    这几乎可以是您 PC 上的任何应用程序,甚至是您本地网络中的其他系统,如果您正在监听公共地址。

    您可以实现路由以查看请求标头/正文是否提供有关其来自何处的任何提示。

    Wireshark 等外部软件也可以监控对 localhost 的网络调用,包括其来源。

    否则,请使用没有人定期向其发送 ping 的不同端口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2016-02-25
      • 2020-12-12
      • 1970-01-01
      • 2016-07-09
      • 2021-04-15
      相关资源
      最近更新 更多