node.js - 如何使用 Node 通过摘要身份验证发布消息?

标签 node.js marklogic

我正在尝试使用 Node.js 将消息发布到具有摘要安全性的 MarkLogic 应用程序服务器。等效的curl请求工作正常:

curl -v -X POST --anyauth -u admin:admin --header "Content-Type:application/json" \
  -d '{"user-name":"joe", "password": "cool"}' http://localhost:8002/manage/v2/users

我尝试使用 NPM request module ,它表示它支持摘要请求。我能够成功执行 GET 请求。这是 POST 的一次尝试:

request(
  {
    'url': 'http://localhost:8000/manage/v2/users',
    'method': 'POST',
    'auth': {
      'user': 'admin',
      'password': 'admin',
      'sendImmediately': false
    },
    'followRedirect': true,
    'followAllRedirects': true,
    'json': true,
    'body': {'user-name':'joe', 'password': 'cool'}
  },
  function(error, response, body) {
    console.log('callback: ' + response.statusCode);
  }
);

这给我带来了 401。用户名和密码是正确的。我也尝试过这样的:

request
  .post(
    'http://localhost:8000/manage/v2/users', 
    {'user-name':'joe', 'password': 'cool'})
  .auth('admin', 'admin', false)
  .on('response', function(response) {
    console.log('response: ' + JSON.stringify(response));
  })
  .on('error', function(error) {
    console.log('error: ' + error);
  });

这让我得到了 302。我觉得我一定错过了一些简单的东西。

  • Node v0.10.31
  • MarkLogic 8.0-2

最佳答案

结果有一个简单的解决方案:curl 请求有效,因为我使用了 localhost:8002; Node 请求失败,因为我使用了 localhost:8000。呃。 302 重定向告诉我使用 8002,但我错过了。

关于node.js - 如何使用 Node 通过摘要身份验证发布消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30406369/

相关文章:

javascript - MarkLogic 应用程序服务器自定义登录页面未从 ajax GET 请求接收 SessionID cookie

xquery - 如何列出 MarkLogic 数据库中的所有根目录和子目录?

mysql - 如何与 Sequelize 建立多对多关联?

javascript - socket.io 未发送到客户端

java - MarkLogic Java API 死锁检测

javascript - 在 xquery 中转义大于 JavaScript 中的符号

xquery - 如何从查询id中获取查询?

javascript - 为什么我无法在 Intellij IDEA 11 中调试 nodejs 应用程序?

javascript - 如何在 Node redis上getAll

javascript - 如何使用间接关联进行过滤