javascript 尝试通过Node.js http模块向Heritrix发出拆除请求时出现401错误

mwg9r5ms  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(93)

我试图通过Node.js http模块和Heritrix REST API向Heritrix发出拆除请求,但我一直收到401错误。我知道这个请求可以使用curl工作,因为我已经用下面的命令测试过了:

curl -v -d "action=teardown" -k -u admin:admin --anyauth --location https://localhost:8443/engine/job/a

然而,当我尝试使用Node.js http模块复制此命令时,我得到一个错误,说我未经授权。下面是我使用的代码:

const https = require('https');

const options = {
  hostname: 'localhost',
  port: 8443,
  path: '/engine/job/a?action=teardown',
  method: 'POST',
  auth: 'admin:admin',
  rejectUnauthorized: false
};

const req = https.request(options, res => {
  console.log(`statusCode: ${res.statusCode}`);
  
  res.on('data', d => {
    process.stdout.write(d);
  });
});

req.on('error', error => {
  console.error(error);
});

req.end();

当我运行这段代码时,我得到以下控制台输出:

statusCode: 401
<html>
<head>
   <title>Status page</title>
</head>
<body style="font-family: sans-serif;">
<p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Unauthorized</p>
<p>The request requires user authentication</p>
<p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">here</a>.<br>
Please continue your visit at our <a href="/">home page</a>.
</p>
</body>
</html>

我不知道我做错了什么。有什么建议我怎么才能让这个工作吗?

1dkrff03

1dkrff031#

我对401错误的理解不多。解决这个问题的方法是通过发送一个没有任何身份验证的请求,在请求头中有'Content-Type': 'application/x-www-form-urlencoded',并从WWW-Authenticate头阅读该质询,来向服务器请求一个身份验证质询。然后使用这个挑战来产生新的响应。

相关问题