当前位置: 首页 > 知识库问答 >
问题:

意外的HTTP请求:POST/MQTT/AUTH

万开畅
2023-03-14

我是EMQTT的新手。我试图使用emq_auth_http,但它不起作用。

我有这3个请求来控制台一些数据和发送数据返回状态为200。

app.post('/mqtt/auth', function(req, res) {
console.log('This is body ', req.body);
res.status(200).send(req.body);
});
app.post('/mqtt/superuser', function(req, res) {
console.log('This is body in superuser ', req.body);
res.status(200).send(req.body);
});
app.get('/mqtt/acl', function(req, res) {
console.log('This is params in acl ', req.params);
res.status(200).send(req.body);
});

邮递员的请求很好。

我已经用Docker在windows上配置了emqtt。我已经将配置文件放在/etc/plugins/emq_auth_http.conf中。

## Variables: %u = username, %c = clientid, %a = ipaddress, %P = password, %t = topic

auth.http.auth_req = http://127.0.0.1:3000/mqtt/auth
auth.http.auth_req.method = post
auth.http.auth_req.params = clientid=%c,username=%u,password=%P

auth.http.super_req = http://127.0.0.1:3000/mqtt/superuser
auth.http.super_req.method = post
auth.http.super_req.params = clientid=%c,username=%u

## 'access' parameter: sub = 1, pub = 2
auth.http.acl_req = http://127.0.0.1:3000/mqtt/acl
auth.http.acl_req.method = get
auth.http.acl_req.params = 
access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t
09:28:29.642 [error] Unexpected HTTP Request: POST /mqtt/auth
09:28:29.644 [error] Client(19645050-9d1b-4c50-acf9- 
c1fe7e69eea8@172.17.0.1:60968): Username 'username' login failed for 404

谢谢

共有1个答案

姬乐池
2023-03-14

容器中的127.0.0.1指的是容器本身,而不是主机。您应该设置主机ip,您可以通过发出命令/sbin/ip routeawk'/default/{print$3}'从容器中获取主机ip,该命令可在此处找到

PS:这样你可以得到docker机器的ip,而不是主机的ip,如果你的服务是由windows提供的,你可以从10.0.75.1的容器中得到主机的ip。您可以在如何从Windows 10上的容器连接到docker主机(docker for Windows)中找到它

 类似资料:
  • 希望在Mulesoft HTTP请求中实现以下功能 卷曲“https://somedomain.com/1/1/1/search“ -X POST -H”授权:承载令牌”

  • 问题内容: 我正在尝试发出POST请求以检索有关一本书的信息。这是返回HTTP代码的代码:302,已移动 当我从浏览器尝试时,可以从以下页面进行操作:http : //www.bkstr.com/webapp/wcs/stores/servlet/BuybackMaterialsView?langId=-1&catalogId=10001&storeId=10051&schoolStoreId=1

  • 问题内容: 我在使用OAuth编写的应用程序中使用了许多HTTP请求。目前,我以相同的方式发送GET和POST请求: 这工作正常。我成功地发布和获取。但是,我担心我没有正确执行POST。我需要在上面的代码中包含以下if语句吗? 如果是这样,为什么?有什么不同?我将不胜感激任何反馈。 谢谢! 问题答案: 内容类型必须与的 实际 格式匹配。仅当内容类型实际经过url编码时,才需要内容类型。例如,您对P

  • 我试图做一个POST请求,但我不能让它工作: 我基本上想复制这个超文本传输协议请求(不是ajax),就像它是由html表单发起的一样: URL:/api 参数:用户名和密码

  • 本文向大家介绍HTTP GET和POST请求的区别?相关面试题,主要包含被问及HTTP GET和POST请求的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: get参数通过url传递,post放在request body中。 get请求在url中传递的参数是有长度限制的,而post没有。 get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。 get请求只能

  • 问题内容: 让我们假设这个网址… (此处的ID需要在POST请求中发送) 我想将其发送到服务器的,该服务器在POST方法中接受它。 如何在Java中执行此操作? 我尝试了这个: 但是我仍然不知道如何通过POST发送 问题答案: 由于原始答案中的某些类已在Apache HTTP Components的较新版本中弃用,因此,我将发布此更新。 顺便说一句,你可以在此处访问完整的文档以获取更多示例。